异常(捕获异常)

xiaoxiao2021-02-28  14

Throwable

是所有异常的超类

error:这种问题是一个严重问题,一般出现这种问题,需要一起解决(程序员只能避免严重问题),比如:内存溢出(OutOfMemory);

Exception(异常): 编译时期异常:如果程序员不管这个,根本没有办法运行;需要去解决 运行时期异常(RuntimeException):只要不是编译时期异常,都属于异常异常;一般情况,是因为们的代码不够严谨.

运行时期异常如何解决:

1)try…catch..finally :捕获异常 2)thorws:抛出异常

捕获异常: 1.一个异常(try…catch…finally..)

try{ 可能出现问题的代码; }catch(异常类名 变量名){ 输出语句; }fianll{ 释放资源; }

可能出现问题的代码如果和catch里面的异常类名能匹配,则打印输出语句

变形:

try{ 可能出现问题的代码; }chatch(异常类名 变量名){ //提示 }

2.俩个异常

(1)一个一个去try....catch (2)一个try,多个catch

实际开发中:捕获异常的时候:给具体的异常类,不要随意的使用Exception

注意:捕获异常:使用一个try多个catch的情况,catch中的异常类名是一种平级关系,如果出现父子关系,那么这种将最大的异常写在最后!

3.JDK7以后,出现了一种新的方式

新的方式 try{ 可能出现问题的代码 }catch(异常类名1 | 异常类名2 | 异常类名3 变量名){

}

注意: 有一个弊端,不够好:开发中,可能会出现同类型问题,需要捕获同一个异常信息;

异常类中的一些方法: public string getMessage():返回的是一个异常的消息字符串

public String toString():返回的是一个简单的描述信息 当前类对象 name:全路径名”: “(冒号:空格) + getMessage()

public void printStackTrace():描述异常信息,以及出现的具体位置在哪里,返回的是void类型,直接在控制台的!(常用)

代码:

public static void main(String[] args) { method1(); method2(); method3(); method4(); } public static void method1(){ int a = 10; try{ System.out.println(a/0); }catch(ArithmeticException e){ System.out.println("除數不能為0"); } }//除數不能為0 public static void method2(){ int a = 20; int [] arr = {10,20,30}; try{ System.out.println(a/0); }catch(ArithmeticException e){ System.out.println("除數不能為0"); } try{ System.out.println(arr[3]); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("沒有這個索引"); } }//除數不能為0 //沒有這個索引 public static void method3(){ int a = 20; int [] arr = {10,20,30}; try{ System.out.println(a/0); System.out.println(arr[3]); }catch(ArithmeticException e){ System.out.println("除數不能為0"); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("沒有這個索引"); } }//除數不能為0 public static void method4(){ int a = 20; int [] arr = {10,20,30}; try{ System.out.println(a/0); System.out.println(arr[3]); }catch(ArithmeticException e){ System.out.println("除數不能為0"); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("沒有這個索引"); }catch(Exception e){ System.out.println("代码可能会问题,但是具体不知道在哪"); } }//除數不能為0
转载请注明原文地址: https://www.6miu.com/read-250045.html

最新回复(0)