Java异常(java异常处理的三种方法)

  本篇文章为你整理了Java异常(java异常处理的三种方法)的详细内容,包含有java异常处理机制 java异常处理的三种方法 java异常处理 java异常体系 Java异常,希望能帮助你了解 Java异常。

  RuntimeException:编译期间不检查,程序出现问题再修改代码

  非RuntimeException:编译期间处理,否则程序不能通过编译,更不能运行

  


开始

 

  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)

  

 

  
 

  总结:

  
编译时异常用throws或者try...catch...

  try...catch...是有显示处理的,就是用try...catch...你可以自己处理异常

  throws是抛出异常,控制台显示的是系统给的异常结果

  
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

  请输入一个数字:

  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的区别

  以上就是Java异常(java异常处理的三种方法)的详细内容,想要了解更多 Java异常的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: