Java异常处理操作实例讲解

  • 时间:
  • 1742人关注

这篇文章主要介绍了Java基础之异常处理操作,涉及java异常捕获、抛出异常、自定义异常处理相关操作技巧,需要的朋友可以参考下,另外这篇文章主要知识点是关于Java、异常处理、Java异常处理的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子资料:

教程详情电子资料
  • 教程类别:Java异常处理
  • 编辑整理:郗嘉石
  • 教程字数:3080字节
  • 阅读时间:大概19分钟
  • 下载本教程(DOC版)
  • JavaScript函数式编程指南
  • Java软件结构与数据结构
  • JavaScript基础教程
  • Java ME手机应用开发技术与案例详解
  • Java完全参考手册(第8版)
  • 本文实例讲述了Java基础之异常处理操作。分享给大家供大家参考,具体如下:

    示例代码:

    public class ExecDemo {
      public static void main(String[] args) {
        int[] nums = new int[4];
        System.out.println("before the exception:");
        try {  //try代码块  try catch代码块可以嵌套
          try{
             nums[7] = 10;  //数组越界
             System.out.println("no exception:");
          }catch(ArithmeticException e){
             e.printStackTrace();
          }
        }catch(ArithmeticException e) { //catch代码块  多个catch块
          e.printStackTrace();  //打印异常信息
        }catch(ArrayIndexOutOfBoundsException e){  // 捕获数组越界错误  捕获子类异常
           e.printStackTrace();
        }catch(Throwable e){  //捕获超类异常 Throwable是所有异常的超类
           e.printStackTrace();
        }
        System.out.println("after the exception");
      }
    }
    
    

    抛出异常:

    public class ThrowDemo {
      public static void main(String[] args) {
        try {
          System.out.println("before throw:");
          throw new ArithmeticException();  //throw关键字抛出一个ArithmeticException()异常(手动抛出异常)
        } catch (ArithmeticException e) {  //捕获异常
          System.out.println("exception caught:");
        }
        System.out.println("after try{}catch{}:");
      }
    }
    
    

    重新抛出异常:

    class Rethrow {
      public static void genException() {
        int[] numer = {2,4,6,8,10,12};
        int[] demon = {2,0,3,4,0};
          for(int i=0;i < numer.length;i++){
            try {                                   //try代码块
              System.out.println(numer[i]/demon[i]);
            } catch (ArithmeticException e) {  //多个catch()块
              System.out.println("can't dev by zero:");
            }catch(ArrayIndexOutOfBoundsException e) {
              System.out.println("no error:");
              throw e;  //throw 重写抛出异常
            }
          }
      }
    }
    public class RethrowDemo{
      public static void main(String args[]) {
        try {
          Rethrow.genException();
        } catch (ArrayIndexOutOfBoundsException e) {  //捕获重新抛出的异常
          System.out.println("error error error error error:");
        }
        finally{  //finally代码块在try catch执行完时执行的。
           System.out.println("Leaving try.");
         }
      }
    }
    
    

    throws语句:一个方法产生自己不做处理的异常,用throws抛出到外层(谁调用,谁处理异常)

    public class ThrowsDemo {
      public static char prompt(String str) throws java.io.IOException{//prompt()方法产生自己不做处理的IOException异常,抛出到外层,谁调用谁处理异常
        System.out.print(str +":");
        return (char) System.in.read();
      }
      public static void main(String[] args) {
        char ch;
        try {
          ch = prompt("enter a letter");  //prompt()可能抛出异常,
        } catch (java.io.IOException e) {  //捕获prompt()抛出的异常
          System.out.println("IOException occurred");
          ch = 'x';
        }
        System.out.println("you pressed:"+ ch);
      }
    }
    
    

    可以用一个catch()捕获多个异常:

    try{
    
    }
    catch(ArithmeticException|ArrayIndexOutOfBoundsException e){//同时捕获多个异常
    }
    
    

    自定义异常:

    class NonIntResultException extends Exception{  //自定义异常继承子Exception
      int n ,d;
      NonIntResultException(int i,int j){
        n = i;
        d = j;
      }
      public String toString() {
        return "result of "+ n +"/"+ d +" is non-integer.";
      }
    }
    public class CustomExceptionDemo {
      public static void main(String[] args) {
        int numer[] = {4,8,15,32,64,127,256,512};
        int denom[] = {2,0,4,4,0,8};
        for(int i=0;i<numer.length;i++) {
          try {
            if((numer[i]%2)!=0) {
              throw new NonIntResultException(numer[i],denom[i]);  //抛出自定义异常
            }
            System.out.println(numer[i] +"/"+ denom[i] +" is "+ numer[i]/denom[i]);
          } catch (ArithmeticException e) {  //捕获ArithmeticException异常
            System.out.println("can't divide by zero!");
          }catch (ArrayIndexOutOfBoundsException e) { //捕获ArrayIndexOutOfBoundsException 异常
            System.out.println("no matching element found.");
          }catch (NonIntResultException e) {  //捕获自定义异常
            System.out.println(e);
          }
        }
      }
    }
    

    希望本文所述对大家java程序设计有所帮助。

    码农之家
    浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别

    5小时43分钟前回答

    浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别

    Exception e中e的getMessage()和toString()方法的区别:

    示例代码1:

    public class TestInfo {
      private static String str =null;
      public static void main(String[] args) {
        System.out.println("test exception");
        try {
          if(str.equals("name")){
            System.out.println("test exception");
          }
        } catch (Exception e) {
          System.out.println(e.toString());
          System.out.println(e.getMessage());
        }
      }
    }

    输出结果:

    ; font-family:" microsoft="" background-color:="" /> null

    示例代码2:

    public class TestInfo {
      private static int m = 0;
      public static void main(String[] args) {
        System.out.println("test exception");
        try {
          m = 899/0;
        } catch (Exception e) {
          System.out.println(e.toString());
          System.out.println(e.getMessage());
        }
      }
    }

    输出结果:

    java.lang.ArithmeticException: / by zero
    / by zero

    总结:由此可以看出,e.toString()获取的信息包括异常类型和异常详细消息,而e.getMessage()只是获取了异常的详细消息字符串。

    以上这篇浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

    展开阅读

    上一篇:Intellij Idea部署OpenCV 4.0.0环境的具体步骤

    下一篇:Java泛型类、泛型方法的理解

    相关内容

    • javaSystem.out.println()输出byte[]、char[]异常的解决办法

      这篇文章主要给大家介绍了关于javaSystem.out.println()输出byte[]、char[]异常问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面

      06-17javaSystem.out.println()输出byte[]、char[]异常的问题详析

      阅读更多
    • java异常处理教程及实例总结

      这篇文章主要为大家分享一份非常详细的Java异常处理实例教程,帮助大家更好的学习java异常处理,感兴趣的小伙伴们可以参考一下

      10-22java异常处理

      阅读更多
    • Java异常区分和处理的经验方法总结

      这篇文章介绍了Java异常区分和处理的一些经验分享,主要是异常选择和使用中的一些误区总结与归纳,具有一定参考价值,需要的朋友可以了解下。

      08-29Java异常区分和处理的一些经验分享

      阅读更多
    • java自定义异常实例详解

      这篇文章主要为大家详细介绍了java简单自定义异常实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

      11-04java简单自定义异常实例代码

      阅读更多
    • Java异常类型以及异常处理总结

      在本篇文章里小编给大家分享了关于Java的异常类型的相关知识点内容,有需要的朋友们跟着学习下。

      05-30Java异常类处理知识点

      阅读更多
    • Java中常见异常打印输出方式

      Java异常是在Java应用中的警报器,下面这篇文章主要给大家介绍了关于Java中异常打印输出的常见方法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看

      01-09Java中异常打印输出的常见方法总结

      阅读更多
    • java异常与处理机制分析

      这篇文章主要介绍了java的异常与处理机制,结合实例形式分析了Java异常与处理机制的概念、原理、相关操作技巧与注意事项,并附带面试题分析供大家参考,需要的朋友可以参考下

      08-11java的异常与处理机制分析【附面试题】

      阅读更多
    • 深入分析Java Web技术内幕(修订版)

      深入分析Java Web技术内幕(修订版)

      编辑推荐 让读者知其然,并知其所以然,是《深入分析Java Web技术内幕(修订版)》一书的特色。 作者来自淘 宝技术一线,亲历了淘 宝网PV从1亿到10亿的发展历程,直接经历了在这个过程中技术的不断突破、飞跃等变迁,并积累了丰富实践经验。 《深入分析Java Web技术内幕(修订版)》正是分享了作者在面临种种技术问题、技术瓶颈时的思路、方法和技巧,具体的应用实践和直接的案例。 在这次的修订版中,作者补充了**网近两年在无线端的应用实践

      大小:79 MBJavaWeb

      点击下载
    • Java上百实例源码以及开源项目源代码

      简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮

      大小:2.01 GBJava

      点击下载
    • 数据结构与算法经典问题解析:Java语言描述

      数据结构与算法经典问题解析:Java语言描述

      数据结构与算法经典问题解析:Java语言描述(原书第2版) 是一本数据结构方面的优秀教材,以Java为描述语言,介绍了计算机编程中使用的数据结构和算法。本书强调问题及其分析,而非理论阐

      大小:107.1 MBJava语言

      点击下载

    学习笔记

    43小时48分钟前回答

    java数组中的异常类型整理

    对于程序中出现异常,是很多程序员不想看到的情况,因为这就需要我们去查询异常的原因,然后进行一些处理异常的操作。在Java数组操作时,也会有一些异常情况的发生。这里我们罗列出了两种:ClassCastException和NullPointerException,下面我们来看一下具体的介绍。 1、异常种类 检查型异常和非检查型异常的主要区别在于其处理方式。检查型异常都需要使用try,catch 和finally 关键字在编译器进行处理,否则会出现编译器报错。对于非检查型异常则不需要这样做。Java中所有继承 Exception 的类的异常都是检查型异常,所有继承RuntimeException 的异常都被称为非检查型异常。 2、ClassCastException 类转换异常,将一个不……

    48小时23分钟前回答

    详谈Java中BigDecimal的一个除法异常

    如下所示: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 说明遇到除不尽的情况了,需要指定商的小数精度和舍入模式。 比如: a=b.divide(c,2,RoundingMode.HALF_UP); 以上这篇详谈Java中BigDecimal的一个除法异常就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

    8小时59分钟前回答

    Java异常基础知识解析

    Java程序运行的非正常现象叫做运行错误,根据其性质可分为两类:错误(Error)和异常(Exception); 他们有一个共同的父类(也是所有异常的顶级父类):Throwable。 异常类结构 Error Error(错误)由JVM生成并抛弃不做处理;此类错误通常与代码和执行的操作无关,是虚拟机中出现了比较严重的问题,程序本身无法解决(常见的错误有死循环、内存泄漏等)。 一个常见的错误为Java虚拟机错误(VirtualMachineError),当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。 Exception Exception(异常)作为一个对象使用,由Java程序抛弃或处理;通常异常产……