Java基础之异常处理操作示例

本文实例讲述了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面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

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

(0)

相关推荐

  • Java异常处理之try...catch...语句的使用进阶

    try就像一个网,把try{}里面的代码所抛出的异常都网住,然后把异常交给catch{}里面的代码去处理.最后执行finally之中的代码.无论try中代码有没有异常,也无论catch是否将异常捕获到,finally中的代码都一定会被执行. 虽然 Java 执行时期系统所提供的预设处理器对除错很有用,你通常想要自己处理例外.这样做有两个优点:第一,它让你修正错误.第二,它可以避免程式自动终止.每当错误发生时,如果你的程式就停止而且列印出堆叠追踪,大多数的使用者都会感到很困惑.很幸运,你很容易就能

  • Java异常处理运行时异常(RuntimeException)详解及实例

      Java异常处理运行时异常(RuntimeException)详解及实例 RuntimeException RunntimeException的子类: ClassCastException 多态中,可以使用Instanceof 判断,进行规避 ArithmeticException 进行if判断,如果除数为0,进行return NullPointerException 进行if判断,是否为null ArrayIndexOutOfBoundsException 使用数组length属性,避免越

  • Java一些常见的出错异常处理方法总结

    一些平时常见的错误及解决办法,我 是新手,每次遇到的错误都记录了下来. 1. 404错误 description The requested resource (/Struts2_0100_Introduction/hello.action) is not available. 先检查Manager Deployments,使之能打开(出现NullPointerException不能打开),主要是服务器在每次允许前备份,再修改了错误后不能及时更正.(如果是勾选的Backup,要改成delete)

  • Java中异常处理之try和catch代码块的使用

    Java try和catch的使用 尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自己处理异常.这样做有两个好处.第一,它允许你修正错误.第二,它防止程序自动终止.大多数用户对于在程序终止运行和在无论何时错误发生都会打印堆栈轨迹感到很烦恼(至少可以这么说).幸运的是,这很容易避免. 为防止和处理一个运行时错误,只需要把你所要监控的代码放进一个try块就可以了.紧跟着try块的,包括一个说明你希望捕获的错误类型的catch子句.完成这个任务很简单,下面的程序包含一个

  • Java异常处理实例教程

    1.什么是异常? 首先,让我们来看看下图的例子: 在这个例子中,存在的错误码由除以0的结果.由于除以0而导致异常: ArithmeticException HelloException.java package com.yiibai.tutorial.exception; public class HelloException { public static void main(String[] args) { System.out.println("Three"); // This

  • Java异常处理实例分析

    本文实例讲述了Java异常处理的用法.分享给大家供大家参考.具体分析如下: Java的异常处理机制可以帮助我们避开或者处理程序可能发生的错误,从而使得程序在遇到一些可恢复的错误的时候不会意外终止,而是去处理这些错误,也使得我们在写程序的时候不必写大量的代码来检查错误情况,增强了代码的可读性和逻辑性.在Java中,异常代表一个错误的实体对象. 异常可分为两类:一类是严重错误,如硬件错误.内存不足等,它们对应着java.lang包下的Error类及其子类.通常这类错误程序自身是无法恢复的,需要中断程

  • java异常处理机制示例(java抛出异常、捕获、断言)

    这是一个介绍基本异常处理的小例子,包括抛出,捕获,断言,日志. Java异常处理通过5个关键字try.catch.throw.throws.finally进行管理.基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出.你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象. 复制代码 代码如下: package

  • 浅析Java Web错误/异常处理页面

    发生服务器 500 异常,如果默认方式处理,则是将异常捕获之后跳到 Tomcat 缺省的异常页面,如下图所示. 不论哪个网站都是一样的,所以为了满足自定义的需要,Tomcat 也允许自定义样式的.也就是在 web.xml 文件中配置: <error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page> 首先说说自带的逻辑.如果某

  • 详解Java异常处理中throw与throws关键字的用法区别

    抛出异常 抛出异常有三种形式,一是throw,一个throws,还有一种系统自动抛异常.下面它们之间的异同. 系统自动抛异常 当程序语句出现一些逻辑错误.主义错误或类型转换错误时,系统会自动抛出异常.如: public static void main(String[] args) { int a = 5, b =0; System.out.println(5/b); //function(); } 系统会自动抛出ArithmeticException异常: Exception in threa

  • 浅谈java异常处理之空指针异常

    听老师说,在以后的学习中大部分的异常都是空指针异常.所以抽点打游戏的时间来查询一下什么是空指针异常 一:空指针异常产生的主要原因如下: (1)当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在 (2)当访问或修改一个对象不存在的字段时会产生异常obj.method() // method方法不存在 (3)字符串变量未初始化: (4)接口类型的对象没有用具体的类初始化,比如: List lt:会报错 List lt = new ArrayList():则不会报

  • java基于spring注解AOP的异常处理的方法

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...finally对异常进行处理,但是我们真的能在写程序的时候处理掉所有可能发生的异常吗? 以及发生异常的时候执行什么逻辑,返回什么提示信息,跳转到什么页面,这些都是要考虑到的. 二.基于@ControllerAdvice(加强的控制器)的异常处理 @ControllerAdvice注解内部使用@Except

  • 简单谈谈java的异常处理(Try Catch Finally)

    异常的英文单词是exception,字面翻译就是"意外.例外"的意思,也就是非正常情况.事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误. 一 前言 java异常处理大家都不陌生,总的来说有下面两点: 1.抛出异常:throw exception class SimpleException{ public void a() throws Exception{ throw new Exception(); }; } 2.捕获异常: public class MyExcepti

随机推荐