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程序设计有所帮助。

以上是 Java基础之异常处理操作示例 的全部内容, 来源链接: utcz.com/z/323642.html

回到顶部