Java学习笔记之异常处理

 更新时间:2018年10月04日 09:09:05   作者:莫凡丶  
这篇文章主要为大家详细介绍了Java学习笔记之异常处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

一.异常的分类

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

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

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

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

二.异常处理的两种方法

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

public static void main(String[] a){
 int sum = 0;
 while(true){
  try {  //以两数相除除数不能为0进行举例
   System.out.println("请依次输入两个数值进行除法操作:");
   Scanner scanner = new Scanner(System.in);
   int one =scanner.nextInt();
   int two =scanner.nextInt();
   sum = one/two;
   System.out.println("最终结果为:"+sum);
  } catch (Exception e) {    //用catch将错误进行捕捉,这里可以使用多重catch,对于不同的错误进行捕捉,但最后的catch建议为Exception。
   // TODO Auto-generated catch block //显示错误堆栈信息
   e.printStackTrace();                          
  }finally{            

 System.out.print("无论有没有错误我都会执行");          }
 }
 }
}

输出:

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

public class Try {
 public static void main(String[] a){
  try{
   Function();  //在函数调用者处对异常进行处理
  }catch(Exception e)
  {
   e.printStackTrace();
  } 
 }
 static void Function() throws Exception{  //通过throws将异常进行抛出
  
  System.out.println("请输入一个数值进行判断:");
  Scanner scanner = new Scanner(System.in);
  int one =scanner.nextInt();
  if(one<100)
  {
   throw new Exception(); //若输入的数值小于100则抛出异常
  }
 } 
}

输出:

3.自定义异常进行处理

class MyException extends Exception{  //自定义异常,通过super方法传递异常信息给父级
 public MyException(){
 super("这是我自定义的异常");
 }
}
 
public class Try {
 public static void main(String[] a){
  try{
   Function();
  }catch(MyException e)
  {
   e.printStackTrace();
  } 
 }
 static void Function() throws MyException{
  
  System.out.println("请输入一个数值进行判断:");
  Scanner scanner = new Scanner(System.in);
  int one =scanner.nextInt();
  if(one<100)
  {
   throw new MyException(); //将自定义异常进行抛出  
  }
 } 
}

输出:

三.异常链

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

示例:

public class Try {
 public static void main(String[] a){
  try{
   Function1();
  }catch(Exception e)
  {
   e.printStackTrace();
  } 
 }
 static void Function1() throws Exception{
  try{
   Function2();
  }catch(Exception e){
   throw new Exception();
  }
 } 
 static void Function2() throws Exception{
  try{
   Function3();
  }catch(Exception e){
   throw new Exception();
  }
 } 
 static void Function3() throws Exception{
   throw new Exception();
 } 
}

输入结果:

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

示例:

public class Try {
 public static void main(String[] a){
  try{
   Function1();
  }catch(Exception e)
  {
   e.printStackTrace();
  } 
 }
 static void Function1() throws Exception{
  try{
   Function2();
  }catch(Exception e){
   throw new Exception("异常2",e);
  }
 } 
 static void Function2() throws Exception{
  try{
   Function3();
  }catch(Exception e){
   throw new Exception("异常2",e);
  }
 } 
 static void Function3() throws Exception{
   throw new Exception("异常3");
 } 
}

运行结果:

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

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

相关文章

  • 44条Java代码优化建议

    44条Java代码优化建议

    代码优化的最重要的作用应该是:避免未知的错误。因此,在写代码的时候,从源头开始注意各种细节,权衡并使用最优的选择,将会很大程度上避免出现未知的错误,从长远看也极大的降低了工作量
    2018-03-03
  • 详解Java代码常见优化方案

    详解Java代码常见优化方案

    这篇文章主要介绍了Java代码常见优化方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 使用SpringBoot实现自动发送注册验证码邮件功能

    使用SpringBoot实现自动发送注册验证码邮件功能

    一直以来,我都对程序如何自动发送邮件感到好奇,想象一下,当你在某个网站注册时,输入邮箱后不久就收到一封带有验证码的邮件,这种体验既方便又高效,所以本文给大家介绍了如何用 Spring Boot 实现自动发送注册验证码邮件,需要的朋友可以参考下
    2025-04-04
  • Spark使用IDEA编写wordcount的示例演示

    Spark使用IDEA编写wordcount的示例演示

    这篇文章主要介绍了Spark使用IDEA编写wordcount的示例演示,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Netty分布式高性能工具类异线程下回收对象解析

    Netty分布式高性能工具类异线程下回收对象解析

    这篇文章主要介绍了Netty分布式高性能工具类异线程下回收对象解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • java随机生成10位数的字符串ID

    java随机生成10位数的字符串ID

    这篇文章主要为大家详细介绍了java随机生成10位数字符串ID的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • java8 stream自定义分组求和并排序的实现

    java8 stream自定义分组求和并排序的实现

    这篇文章主要介绍了java8 stream自定义分组求和并排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Java实现导出ZIP压缩包的方法

    Java实现导出ZIP压缩包的方法

    这篇文章主要介绍了Java实现导出ZIP压缩包的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • JetBrains IntelliJ IDEA 优化教超详细程

    JetBrains IntelliJ IDEA 优化教超详细程

    这篇文章主要介绍了JetBrains IntelliJ IDEA 优化教超详细程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Java Jar包项目内存设置方法举例

    Java Jar包项目内存设置方法举例

    这篇文章主要给大家介绍了关于Java Jar包项目内存设置方法的相关资料,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01

最新评论