首页IT科技java异常处理原则(Java异常)

java异常处理原则(Java异常)

时间2025-08-05 11:25:33分类IT科技浏览5642
导读:异常 一、异常:就是程序出现不正常的情况。 Throwable Error Exception RuntimeException 非RuntimeException Error:严重问题,不处理...

异常

一                、异常:就是程序出现不正常的情况                。

Throwable Error Exception RuntimeException 非RuntimeException Error:严重问题,不处理 Exception:异常类                ,程序本身可以处理 RuntimeException:编译期间不检查                        ,程序出现问题再修改代码 非RuntimeException:编译期间处理        ,否则程序不能通过编译            ,更不能运行

二                        、异常处理方案:

1. try...catch... 2. throws

1. try...catch...

//系统默认处理异常方式 public class ExceptionDemo { public static void main(String[] args) { System.out.println("开始"); method(); System.out.println("结束"); } public static void method (){ int[] arr = {1,2,3}; System.out.println(arr[3]); } }

运行结果:当出现异常时                        ,程序不能继续往下执行

开始 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 at com.chawaner.test2.ExceptionDemo.method(ExceptionDemo.java:17) at com.chawaner.test2.ExceptionDemo.main(ExceptionDemo.java:11) //try...catch..处理异常 public class ExceptionDemo { public static void main(String[] args) { System.out.println("开始"); method(); System.out.println("结束"); } public static void method (){ int[] arr = {1,2,3}; try { System.out.println(arr[3]); } catch (ArrayIndexOutOfBoundsException e) { e.printStackTrace(); } } }

运行结果:当出现异常时            ,程序能继续往下执行

开始 结束 java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 at com.chawaner.test2.ExceptionDemo.method(ExceptionDemo.java:18) at com.chawaner.test2.ExceptionDemo.main(ExceptionDemo.java:11)

2. Throwable:所有异常的父类        ,包含的一些方法

public String getMessage() 返回异常信息 public String toString() 返回可抛出的简短说明 public void printStackTrace() 打印详细异常信息 public class ExceptionDemo { public static void main(String[] args) { System.out.println("开始"); method(); System.out.println("结束"); } public static void method (){ int[] arr = {1,2,3}; try { System.out.println(arr[3]); } catch (ArrayIndexOutOfBoundsException e) { //e.printStackTrace(); //返回异常信息 System.out.println("异常信息:"+e.getMessage()); //返回可抛出的简短说明 System.out.println("简短说明:"+e.toString()); //打印详细异常信息 e.printStackTrace(); } } }

运行结果:

开始 异常信息:Index 3 out of bounds for length 3 简短说明:java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 结束 //详细异常信息 java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 at com.chawaner.test2.ExceptionDemo.method(ExceptionDemo.java:18) at com.chawaner.test2.ExceptionDemo.main(ExceptionDemo.java:11)

3. 编译时异常和运行时异常的区别 运行时异常:

public class ExceptionDemo1 { public static void main(String[] args) { method(); } public static void method (){ int[] arr = {1,2,3}; //这个索引越界了                        ,但是写代码时没有报错                ,运行的时候才报错 //所以    ,这是个运行时异常 System.out.println(arr[3]); } }

运行结果:ArrayIndexOutOfBoundsException

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 at com.chawaner.test2.ExceptionDemo1.method(ExceptionDemo1.java:17) at com.chawaner.test2.ExceptionDemo1.main(ExceptionDemo1.java:10)

编译时异常:不一定会出问题                        ,但有可能会出问题

4. throws 有时候异常能够用try...catch...处理                    ,有时候可能出现的异常是我们处理不了的,这个时候用throws解决                        。

在方法括号后跟上throws 异常类名

运行结果:throws可以解决编译时异常那个红色波浪线的提示        。 Wed Nov 09 00:00:00 CST 2022

运行结果:运行时异常用throws解决不了                    ,只是抛出异常            。还得用try...catch...处理                        ,才能在提示报错后    ,继续执行后面的程序                        。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 at com.chawaner.test2.ExceptionDemo1.method(ExceptionDemo1.java:24) at com.chawaner.test2.ExceptionDemo1.main(ExceptionDemo1.java:14)

总结:

运行时异常用try...catch... 编译时异常用throws或者try...catch... try...catch...是有显示处理的                ,就是用try...catch...你可以自己处理异常 throws是抛出异常                        ,控制台显示的是系统给的异常结果

自定义异常

写一个类        ,让类继承Exception

//自己写的JException异常类 public class JException extends Exception{ public JException() { } public JException(String message) { super(message); } } /* IntNumber类            ,里面有个检查数字范围的方法checkNum(int i) checkNum(int i)方法是由JException抛出的 JException抛出的异常结果显示为:输入的数字有误                        ,范围应为:0-100 */ public class IntNumber { public void checkNum(int i) throws JException{ if (i < 0 || i > 100) { //抛出异常            ,并显示自己写的异常结果信息 throw new JException("输入的数字有误        ,范围应为:0-100"); }else { System.out.println("正常"); } } } //测试类:输入数字                        ,并检查数字的范围 public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个数字:"); int i = sc.nextInt(); IntNumber in = new IntNumber(); try { //编译时异常 in.checkNum(i); } catch (JException e) { e.printStackTrace(); } } } //运行结果:控制台显示了自定义异常类JException //以及自己处理的异常显示结果:输入的数字有误                ,范围应为:0-100 请输入一个数字: 120 com.chawaner.test3.JException: 输入的数字有误    ,范围应为:0-100 at com.chawaner.test3.IntNumber.checkNum(IntNumber.java:12) at com.chawaner.test3.Test.main(Test.java:18)

throws和throw的区别

throws throw 用在方法声明后                        ,后面跟异常类名 用在方法体内                    ,后面跟异常对象 抛出异常,由方法调用者处理 抛出异常                    ,由方法内的语句处理 表示可能发生异常                        ,但不一定会发生 执行throw时    ,一定抛出了异常

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python做优化算法(如何优化python的效率)