java异常处理(代码片段)

hong-bo hong-bo     2022-12-17     480

关键词:

 程序中的一般异常情况为:文件找不到、网络连接不通或中断、算术运算出错(如除数为0)、数组下标越界、装载了一个不存在的类、对null对象操作、类型转换异常等,异常会中断正在运行的程序。  异常处理机制就像对平时可能会出现的意外情况,预先想好了解决的方法。

     Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws.

    try-catch程序块的执行流程分为3种情况:

   1.try块中所有语句正常执行完毕,不发生异常,那么不会执行catch块语句。

   2.try块语句在执行过程中遇到异常,并且这个异常与catch中声明的异常类型相匹配,那么try块中异常语句之后的语句都不会再执行,直接跳入catch块。匹配是指catch所处理的异常类型与所生成的异常类完全一致或是它的父类。

如:

try
      system.out.println("请输入第一个操作数:");

      Scanner input=new Scanner(System.in);

      int num1=input.nextInt();

      System.out.print("请输入第二个操作数");

      int num2=input.nextInt();

      int  result=num1/num2

        catch(Exception e)
             System.err.print("只能输入数字!");
       

(如果在控制台上输出第一个参数num1的值时输出的不是整数,而是字符串“aa”,那么控制台输出和输入的信息为三句话:1."请输入第一个操作数: "2." aa"3."只能输入数字!")

 3.try语句块在执行过程中遇到的异常,抛出的异常在catch块里面没有声明,那么异常会抛给Java虚拟机,程序立刻退出。

  catch块可以调用异常对象的方法输出异常信息(如:e.printStackTrace();),也可以用户自定义处理信息(如:e.getMessage();)。

——————————————————————————————————————————————————————————————————

声明异常throws和抛出异常throw:

Java语言中通过关键字throw声明某个方法可能抛出的各种异常。throws可以同时声明多个异常,之间用逗号隔开。

如:

public Test()
      static void practice() throws Exception  //如果我很懒,在这个方法里没有处理异常的机制那么我就要在方法后面声明一个异常
             System.out.printIn("请输入一个整数");
             int result=input.nextInt();
             System.out.println(result);
     
       public static void Main(String[]  args)//那么其他调用这个方法的地方必须进行异常处理,要么也抛出去,要么就捕获处理
            try
                     practice();
              catch(Exception e)
                     System.err.println("请输入一个整数");
              
        

抛出异常throw,java语言中通过throw可以手动抛出异常一般和throws一起使用。如:
public Person
      private String name="";//姓名
      private int age=0;//年龄
     public  void setAge(String age) throws Exception
      if(age>=0&&age<=100)
           this.age=age;
      else
           throw new Exception("年龄必须在0-100岁之间!");
      
  
     public int getAge() 
        return age;
     

   //方法
   public void print()
       System.out.println(“我”+this.age+"岁了!");
   

public class Test   
       static Scanner input=new Scanner(System.in);  
      public static void main(String[] args)    
        Person person=new Person();
      try
             person.setAge(101);
            person.print();
         catch(Exception e)
            e.getMessage();
        
 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。        

Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。

       Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。

。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过Error的子类描述。

       Exception(异常):是程序本身可以处理的异常。

       Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。

   注意:异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。

   通常,Java的异常(包括Exception和Error)分为可查的异常(checked exceptions)和不可查的异常(unchecked exceptions)
      可查异常(编译器要求必须处置的异常):正确的程序在运行中,很容易出现的、情理可容的异常状况。可查异常虽然是异常状况,但在一定程度上它的发生是可以预计的,而且一旦发生这种异常状况,就必须采取某种方式进行处理。

      除了RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。

     不可查异常(编译器不要求强制处置的异常):包括运行时异常(RuntimeException与其子类)和错误(Error)。

     Exception 这种异常分两大类运行时异常和非运行时异常(编译异常)。程序中应当尽可能去处理这些异常。

       运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

      运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。        非运行时异常 (编译异常):是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。

 

常见的异常类型:

1.Exception:异常层次结构的根类

2.ArithmeticException:算术错误情形,如以0做除数

3.ArrayIndexOutOfBoundsException:数组下标越界。

4.NullPointerException:常识访问Null对象成员 

5.ClassNotFoundException:不能加载所需的类 

6.InputMismatchException:预得到的数据类型与输入的数据类型不匹配

7.IllegalArgumentException:方法接收到非法参数 

8.ClassCastException:对象强制类型转换出错  

9.NumberFormatException:数字格式转换异常,如把"abc"转换成数字

 

java中的异常处理机制(代码片段)

文章目录聊聊Java中的异常处理机制概念异常处理抛出异常异常跟踪栈:异常处理步骤:1.捕获异常2.处理异常3.回收资源Java的异常处理接口关于finallyfinally是无条件执行的吗?在finally中return会发生什么?聊聊Java中... 查看详情

java异常处理机制(代码片段)

目录1.1Java异常的概念与分类1.1.1引入异常(数组越界)1.1.2 Throwable1.2Java异常捕获处理1.3异常处理finally语句使用1.3.1引入finally关键字1.3.2 采用finally释放Scanner资源1.3Java异常抛出处理1.3.1主动抛出异常1.4自定义异常类1.5综... 查看详情

java异常处理机制(代码片段)

目录1.1Java异常的概念与分类1.1.1引入异常(数组越界)1.1.2 Throwable1.2Java异常捕获处理1.3异常处理finally语句使用1.3.1引入finally关键字1.3.2 采用finally释放Scanner资源1.3Java异常抛出处理1.3.1主动抛出异常1.4自定义异常类1.5综... 查看详情

java的异常处理机制(代码片段)

Java语言在设计之初就提供了相对完善的异常处理机制。我们首先介绍一下Java中的异常。介绍Java中的异常异常是程序在运行过程中出现的程序异常事件,异常会中断正在执行的正常指令流。Java中的异常分为两大类:Exception和Error... 查看详情

java异常处理总结(代码片段)

一、Java异常继承框架Error:Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。Exception:在Exc... 查看详情

java异常处理(代码片段)

Java异常处理  异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。  比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么... 查看详情

java异常处理机制(代码片段)

1.异常是指在程序的运行过程中所发生的不正常的情况或者发生错误,导致中断正在运行的程序。2.异常处理语句:try-catch,如果try代码块中捕获到异常,则到catch代码块中处理,否则跳过忽略catch代码块。(良好的编程习惯,在异... 查看详情

java休息javaee异常处理(代码片段)

查看详情

java异常处理(代码片段)

一.异常框架二.异常分类1.必检异常:不可避免必须进行异常处理,要不编译器报错,Exception以及它的子类(除去RuntimeException)2.免检异常:RuntimeException以及它的子类三.异常处理方式Java编译期异常必须要进行处理... 查看详情

java异常处理(代码片段)

java异常简介程序运行过程中出现不可以预料的错误和bug,导致程序中止或产生了错误的结果,这个现象就叫异常一、为什么要有异常处理机制?Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证... 查看详情

java之uncaughtexceptionhandler异常处理机制(代码片段)

JAVA之UNCAUGHTEXCEPTIONHANDLER异常处理机制1.JAVA1.5版本出现的 UNCAUGHTEXCEPTIONHANDLER当线程由于未捕获异常突然终止时调用的处理程序的接口。当一个线程由于未捕获异常即将终止时,Java虚拟机将使用thread.getuncaughtexceptionhandler()查询... 查看详情

java之uncaughtexceptionhandler异常处理机制(代码片段)

JAVA之UNCAUGHTEXCEPTIONHANDLER异常处理机制1.JAVA1.5版本出现的 UNCAUGHTEXCEPTIONHANDLER当线程由于未捕获异常突然终止时调用的处理程序的接口。当一个线程由于未捕获异常即将终止时,Java虚拟机将使用thread.getuncaughtexceptionhandler()查询... 查看详情

java小技能:异常处理(代码片段)

文章目录前言I异常的处理方式1.1抛异常1.2捕捉异常1.3抛异常和捕获异常的区别1.4产生异常II异常分类2.1异常的选择2.2编译时异常与运行时异常的语法检查区别III自定义的异常3.1如何自定义异常?3.2自定义异常示例IVhttp请求返回详... 查看详情

java异常处理(代码片段)

 程序中的一般异常情况为:文件找不到、网络连接不通或中断、算术运算出错(如除数为0)、数组下标越界、装载了一个不存在的类、对null对象操作、类型转换异常等,异常会中断正在运行的程序。 异常处理机制就像... 查看详情

java异常处理规范(代码片段)

正文在下面,先打个广告:文章目录java异常简介异常处理规范异常错误码前面介绍了日志打印规范,如果想打印出合格的日志,还需要了解Java对异常处理的一些知识。java异常简介先来看一下Java中异常的类图,该... 查看详情

java异常处理规范(代码片段)

正文在下面,先打个广告:文章目录java异常简介异常处理规范异常错误码前面介绍了日志打印规范,如果想打印出合格的日志,还需要了解Java对异常处理的一些知识。java异常简介先来看一下Java中异常的类图,该... 查看详情

异常处理(代码片段)

异常,不可避免执行中发生的不正常情况(开发中语法和逻辑错误不算)Throwable类,异常根父类PublicStringgetMessage()//打印错误信息publicvoidprintStackTrace()//打印异常抛出轨迹机制,异常向上抛出,等待处理java健壮性,鲁棒性异常处... 查看详情

java异常处理机制(代码片段)

...f0c;它阻止了程序按照程序员的预期正常执行,这就是异常,那么异常发生之后怎么办,Java提供了更加优秀的解决办法-异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻... 查看详情