Java異常詳細介紹
①
原始碼:
package cn.ecut.Exception;
/**
* Java三種型別的異常
* 1、檢查性異常(IOException):最具代表的檢查性異常是使用者錯誤或問題引起的異常,這是程式設計師無法預見的
* 例如要開啟一個不存在的檔案時,一個異常就發生了,這些異常在編譯時不能簡單地忽略
* 2、執行時異常(RuntimeException):執行時異常是可能被程式設計師避免的異常,與檢查性異常相反,執行時異常可以在編譯時被忽略
* 3、錯誤(Error):錯誤不是異常,而是脫離程式設計師控制的問題。錯誤在程式碼中通常被忽略。例如,當棧溢位時,一個錯誤就發生了
* 它們在編譯時被忽略
*
* 關鍵字:try catch finally throw throws
*
* Error和Exception的區別:Error通常是災難性的致命的錯誤,是程式無法控制和處理的,當出現這些異常時,Java虛擬機器(JVM)
* 一般會選擇終止執行緒;Exception通常情況下是可以被程式處理的,並且在程式中應該儘可能的去處理這些異常
*/
public class Demo1 {
public static void main(String[] args) {
int a=1;
int b=0;
try{ //try監控區域
System.out.println(a/b);
}catch(ArithmeticException e){ //catch 捕獲異常
System.out.println("分母不能為0!");
}finally{ //finally 處理善後工作
System.out.println("finally");
}
}
}
執行結果:
分母不能為0!
finally
②
原始碼:
package cn.ecut.Exception;
public class Demo2 {
public static void main(String[] args) {
int a = 1;
int b = 0;
//假設要捕獲多個異常:從小到大!
try { //try監控區域
System.out.println(a / b);
} catch (Error e) { //catch 捕獲異常
System.out.println("Error!");
} catch (Exception e) {
System.out.println("Exception!");
} catch (Throwable t) {
System.out.println("Throwable!");
} finally { //finally 處理善後工作
System.out.println("finally");
}
}
}
執行結果:
Exception!
finally
③
原始碼:
package cn.ecut.Exception;
public class Demo3 {
public static void main(String[] args) {
int a=1;
int b=0;
try{ //try監控區域
System.out.println(a/b);
}catch(Exception e){ //catch 捕獲異常
e.printStackTrace(); //列印錯誤資訊
}finally{ //finally 處理善後工作
System.out.println("finally");
}
}
}
執行結果:
java.lang.ArithmeticException: / by zero
at cn.ecut.Exception.Demo3.main(Demo3.java:10)
finally
④
原始碼:
package cn.ecut.Exception;
public class Demo4 {
public static void main(String[] args) {
try{
new Demo4().test(1,0);
}catch(ArithmeticException e){
System.out.println("分母不能為0!");
e.printStackTrace();
}
}
//假設在這方法中,處理不了這個異常(沒有try...catch),方法上丟擲異常(throws),誰呼叫這個方法誰就要處理這個異常
//呼叫者可以選擇捕獲異常(try...catch)或者繼續向上丟擲異常(throw)
public void test(int a,int b)throws ArithmeticException{
if(b==0){
throw new ArithmeticException(); //主動丟擲異常,一般在方法中使用
}else{
System.out.println(a/b);
}
}
}
執行結果:
分母不能為0!
java.lang.ArithmeticException
at cn.ecut.Exception.Demo4.test(Demo4.java:19)
at cn.ecut.Exception.Demo4.main(Demo4.java:6)
⑤
原始碼:
package cn.ecut.Exception;
/**
* 自定義的異常類
*/
public class MyException extends Exception {
//傳遞數字>13
private int detail;
public MyException(int a){
this.detail=a;
}
public String toString(){
return "MyException{"+detail+'}';
}
}
package cn.ecut.Exception;
public class Test {
public static void main(String[] args) {
try{
test(14);
}catch(MyException e){
System.out.println("Myexception=>"+e);
}
}
static void test(int a) throws MyException{
System.out.println("傳遞的數為:"+a);
if(a>13){
throw new MyException(a);
}
}
}
執行結果:
傳遞的數為:14
Myexception=>MyException{14}
相關文章
- Java_異常介紹Java
- java泛型詳細介紹Java泛型
- json詳細介紹(for Java)JSONJava
- 超詳細 Java 15 新功能介紹Java
- Java 執行緒池詳細介紹Java執行緒
- javascript this詳細介紹JavaScript
- JDBC 詳細介紹JDBC
- Kafka詳細介紹Kafka
- Git詳細介紹Git
- java運算子和表示式詳細介紹Java
- Go Channel 詳細介紹Go
- Nacos 介面詳細介紹
- MQ詳細命令介紹MQ
- Recovery命令詳細介紹
- Vmstat 命令詳細介紹
- Java開源的混淆器 Proguard詳細介紹Java
- JAVA異常處理原則和log4j輸出詳細異常分析Java
- Flutter系列(一)——詳細介紹Flutter
- Nginx服務詳細介紹Nginx
- python字典詳細介紹Python
- Spring bean詳細介紹SpringBean
- Http Module 的詳細介紹HTTP
- 【SCN】Oracle SCN 詳細介紹Oracle
- SOLIDWORKS API詳細介紹SolidAPI
- Webpack 打包 Javascript 詳細介紹WebJavaScript
- mysql binlog詳細介紹MySql
- 【工具】Sublime使用詳細介紹
- asmcmd工具的詳細介紹ASM
- Mysqldump工具的詳細介紹MySql
- rman超詳細命令介紹
- Aix 上NFS詳細介紹AINFS
- ApplicationContext 詳細介紹APPContext
- 詳細介紹Java中的堆、棧和常量池Java
- wireshark、異常資料分析、常見RST介紹
- 本文將詳細介紹oracle 10g OEM常規錯誤Oracle 10g
- TreeViewTemplate移動元件詳細介紹View元件
- pyhanlp 文字聚類詳細介紹HanLP聚類
- LVM詳細介紹及建立LVM