经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
Java学习笔记之异常处理
来源:jb51  时间:2018/10/8 8:44:39  对本文有异议

本文实例为大家分享了Java异常处理的具体代码,供大家参考,具体内容如下

一.异常的分类

1.由Java虚拟机抛出的异常(Error):程序无法处理的问题,用户不用去进行处理(虚拟机错误丶内存溢出错误丶线程死锁)

2.Exception异常:程序本身可以进行处理的异常

1).非检查异常(Unchecked Exception):编译器不需要强制处理的异常(空指针异常丶数组下标越界异常丶算数异常丶类型转换异常)

2).检查异常(checked Exception):编译器需要强制处理的异常(IOException丶SQLException) 

二.异常处理的两种方法

1.通过try丶catch和finally关键字在当前位置进行异常处理

  1. public static void main(String[] a){
  2. int sum = 0;
  3. while(true){
  4. try {  //以两数相除除数不能为0进行举例
  5. System.out.println("请依次输入两个数值进行除法操作:");
  6. Scanner scanner = new Scanner(System.in);
  7. int one =scanner.nextInt();
  8. int two =scanner.nextInt();
  9. sum = one/two;
  10. System.out.println("最终结果为:"+sum);
  11. } catch (Exception e) {    //用catch将错误进行捕捉,这里可以使用多重catch,对于不同的错误进行捕捉,但最后的catch建议为Exception。
  12. // TODO Auto-generated catch block //显示错误堆栈信息
  13. e.printStackTrace();                          
  14. }finally{            
  15.  
  16. System.out.print("无论有没有错误我都会执行");          }
  17. }
  18. }
  19. }

输出:

2.通过try丶catch丶finally丶throw和throws抛出异常给函数调用者进行处理

  1. public class Try {
  2. public static void main(String[] a){
  3. try{
  4. Function();  //在函数调用者处对异常进行处理
  5. }catch(Exception e)
  6. {
  7. e.printStackTrace();
  8. }
  9. }
  10. static void Function() throws Exception{  //通过throws将异常进行抛出
  11. System.out.println("请输入一个数值进行判断:");
  12. Scanner scanner = new Scanner(System.in);
  13. int one =scanner.nextInt();
  14. if(one<100)
  15. {
  16. throw new Exception(); //若输入的数值小于100则抛出异常
  17. }
  18. }
  19. }

输出:

3.自定义异常进行处理

  1. class MyException extends Exception{  //自定义异常,通过super方法传递异常信息给父级
  2. public MyException(){
  3. super("这是我自定义的异常");
  4. }
  5. }
  6. public class Try {
  7. public static void main(String[] a){
  8. try{
  9. Function();
  10. }catch(MyException e)
  11. {
  12. e.printStackTrace();
  13. }
  14. }
  15. static void Function() throws MyException{
  16. System.out.println("请输入一个数值进行判断:");
  17. Scanner scanner = new Scanner(System.in);
  18. int one =scanner.nextInt();
  19. if(one<100)
  20. {
  21. throw new MyException(); //将自定义异常进行抛出  
  22. }
  23. }
  24. }

输出:

三.异常链

有的时候我们会在处理一个异常的时候抛出一个新的异常,也就是异常的嵌套,但是最后我们得到的异常信息却只有一个。

示例:

  1. public class Try {
  2. public static void main(String[] a){
  3. try{
  4. Function1();
  5. }catch(Exception e)
  6. {
  7. e.printStackTrace();
  8. }
  9. }
  10. static void Function1() throws Exception{
  11. try{
  12. Function2();
  13. }catch(Exception e){
  14. throw new Exception();
  15. }
  16. }
  17. static void Function2() throws Exception{
  18. try{
  19. Function3();
  20. }catch(Exception e){
  21. throw new Exception();
  22. }
  23. }
  24. static void Function3() throws Exception{
  25. throw new Exception();
  26. }
  27. }

输入结果:

这样的话显示出的异常就只有一个了,那我们如果想让这条异常链中的所有异常信息全部输出该怎么办呢?方法很简单,我们在抛出异常的时候将异常对象也当作参数进行抛出就行了。

示例:

  1. public class Try {
  2. public static void main(String[] a){
  3. try{
  4. Function1();
  5. }catch(Exception e)
  6. {
  7. e.printStackTrace();
  8. }
  9. }
  10. static void Function1() throws Exception{
  11. try{
  12. Function2();
  13. }catch(Exception e){
  14. throw new Exception("异常2",e);
  15. }
  16. }
  17. static void Function2() throws Exception{
  18. try{
  19. Function3();
  20. }catch(Exception e){
  21. throw new Exception("异常2",e);
  22. }
  23. }
  24. static void Function3() throws Exception{
  25. throw new Exception("异常3");
  26. }
  27. }

运行结果:

到此,我们Java中的异常便是描述完了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号