java異常處理機(jī)制示例(java拋出異常、捕獲、斷言)
這是一個(gè)介紹基本異常處理的小例子,包括拋出,捕獲,斷言,日志。
Java異常處理通過(guò)5個(gè)關(guān)鍵字try、catch、throw、throws、finally進(jìn)行管理。基本過(guò)程是用try語(yǔ)句塊包住要監(jiān)視的語(yǔ)句,如果在try語(yǔ)句塊內(nèi)出現(xiàn)異常,則異常會(huì)被拋出,你的代碼在catch語(yǔ)句塊中可以捕獲到這個(gè)異常并做處理;還有以部分系統(tǒng)生成的異常在Java運(yùn)行時(shí)自動(dòng)拋出。你也可以通過(guò)throws關(guān)鍵字在方法上聲明該方法要拋出異常,然后在方法內(nèi)部通過(guò)throw拋出異常對(duì)象。
package com.hongyuan.test;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ExceptionHandleTest {
static{
//開啟斷言,此后由系統(tǒng)類加載器加載的類將啟用斷言。
ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
}
public static void main(String[] args) {
/*
* 拋出,捕獲
*/
try {
TryCatchTest.run(10, -1);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("====================================================");
//日志
LogerTest.run();
System.out.println("====================================================");
//斷言
AssertTest.div(3,0);
}
}
/*
* 斷言
*/
class AssertTest {
public static double div(int b,int a){
assert a!=0:"你這么用,你小學(xué)老師知道嗎?";
return (double)b/a;
}
}
/*
* 日志
*/
class LogerTest {
private static Logger logger=null;
static{
//獲取日志對(duì)象并定義日志級(jí)別
logger=Logger.getLogger(LogerTest.class.getName());
logger.setLevel(Level.ALL);
}
public static void run(){
//進(jìn)入方法
logger.entering(LogerTest.class.getName(), "run");
//普通信息
logger.info("又來(lái)找我麻煩,這筆賬我記下了?。?!");
//警告
logger.warning("太累了,這活沒法干了!??!");
//嚴(yán)重
logger.log(Level.SEVERE,"老子不干了!!! ^O^");
//退出方法
logger.exiting(LogerTest.class.getName(), "run");
}
}
/*
* 捕獲,拋出
*/
class TryCatchTest {
public static void run(int x,int y) throws IOException {
try{//必須
if(x<0||y<0){
throw new IllegalArgumentException("無(wú)語(yǔ)了,這讓我怎么辦?。。?!");
}
}catch(Exception e){//可選
IOException e1=new IOException("你自己看著辦吧!");
e1.initCause(e.getCause());
throw e1;
}finally{//可選
System.out.println("最后他們過(guò)上了幸福的生活?。。。。ㄍ辏?);
}
}
}
相關(guān)文章
HttpServletRequestWrapper干預(yù)Request處理流程解析
這篇文章主要分析在?Tomcat的處理?http?請(qǐng)求的流程中干預(yù)?Request對(duì)象,?通過(guò)基于HttpServletRequestWrapper和?Filter組合進(jìn)行干預(yù),有需要的朋友可以借鑒參考下,希望能夠有所幫助2023-09-09
Java多線程之Semaphore實(shí)現(xiàn)信號(hào)燈
這篇文章主要給大家分享的是Java多線程之Semaphore實(shí)現(xiàn)信號(hào)燈的練習(xí),emaphore是計(jì)數(shù)信號(hào)量。Semaphore管理一系列許可證。每個(gè)acquire方法阻塞,直到有一個(gè)許可證可以獲得然后拿走一個(gè)許可證;下面一起進(jìn)入文章學(xué)習(xí)Semaphore的具體內(nèi)容2021-10-10
spring bean.xml文件p標(biāo)簽使用報(bào)錯(cuò)的解決
這篇文章主要介紹了spring bean.xml文件p標(biāo)簽使用報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java?Hutool工具包中HttpUtil的日志統(tǒng)一打印及統(tǒng)一超時(shí)時(shí)間配置
Hutool是一個(gè)Java基礎(chǔ)工具類,對(duì)文件、流、加密解密、轉(zhuǎn)碼、正則、線程、XML等JDK方法進(jìn)行封裝,組成各種Util工具類,這篇文章主要給大家介紹了關(guān)于Java?Hutool工具包中HttpUtil的日志統(tǒng)一打印及統(tǒng)一超時(shí)時(shí)間配置的相關(guān)資料,需要的朋友可以參考下2024-01-01
List集合對(duì)象中按照不同屬性大小排序的實(shí)例
下面小編就為大家?guī)?lái)一篇List集合對(duì)象中按照不同屬性大小排序的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
Java后臺(tái)接口開發(fā)初步實(shí)戰(zhàn)教程
下面小編就為大家分享一篇 Java后臺(tái)接口開發(fā)初步實(shí)戰(zhàn)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01

