`
k_lb
  • 浏览: 834096 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

JAVA 异常处理

 
阅读更多

异常处理格式

在Java 中使用 try....catch 进行异常的处理


try{
可能出现异常的语句
}catch(异常类 异常对象){
异常处理
}catch(异常类 异常对象){
异常处理
}catch(异常类 异常对象){
异常处理
}。。。
finally{
异常的出口;
}



package org.exceptiondemo;

public class ExceptionDemo02 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 10;
		int j = 0;
		System.out.println("******* 计算开始 *******");
		try{
			System.out.println("计算结果:"+i/j);
		}catch(ArithmeticException e){
			System.out.println("出现了数学异常:"+e);
		}
		
		System.out.println("******* 计算结束 *******");
	}

}



package org.exceptiondemo;

public class ExceptionDemo01{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 10;
		int j = 0;
		System.out.println("******* 计算开始 *******");
		try{
			System.out.println("计算结果:"+i/j);
		}catch(ArithmeticException e){
			System.out.println("异常原因:"+e);
		}finally{
			System.out.println("不管是否有异常,我都执行");
		}
		
		System.out.println("******* 计算结束 *******");
	}

}



package org.exceptiondemo;

public class ExceptionDemo02{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 0 ;
		int j = 0;
		System.out.println("******* 计算开始 *******");
		try{
			i = Integer.parseInt(args[0]);
			j = Integer.parseInt(args[1]);
			System.out.println("计算结果:"+i/j);
		}catch(ArithmeticException e){
			System.out.println("出现了数据学异常:"+e);
		}catch(NumberFormatException e){
			System.out.println("输入的不是数字:"+e);
		}catch(ArrayIndexOutOfBoundsException e){
			System.out.println("输入的参数个数不对:"+e);
		}finally{
			System.out.println("不管是否有异常,我都执行");
		}
		
		System.out.println("******* 计算结束 *******");
	}

}


那么寻于本程序来讲,实际上还是有可能出现其他异常的。


异常处理流程

1. 对于java 来讲,每当程序中出现了异常,实际上都是产生了一个异常类的实例化对象

这种处理格式实际上非常类似于方法传参,只要参数类型匹配了,则就可以使用此catch进行处理


实际上异常处理的最大父类:Throwable,但是一般开发中不会使用此种方式处理,因为其下有两个子类

Error: Error 一般表示JVM错误,与程序无关

Exception:一般指的是程序中的错误,所以一般开发中如果要想进行程序的处理,其本上是使用此类表示.


一般来讲在程序捕获的时候不要出现Throwable,因为表示的范围太大了


package org.exceptiondemo;

public class ExceptionDemo02{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 0 ;
		int j = 0;
		System.out.println("******* 计算开始 *******");
		try{
			i = Integer.parseInt(args[0]);
			j = Integer.parseInt(args[1]);
			System.out.println("计算结果:"+i/j);
		}catch(ArithmeticException e){
			System.out.println("出现了数据学异常:"+e);
		}catch(NumberFormatException e){
			System.out.println("输入的不是数字:"+e);
		}catch(ArrayIndexOutOfBoundsException e){
			System.out.println("输入的参数个数不对:"+e);
		}catch(Exception e){
			System.out.println("其它异常:"+e);
		}finally{
			System.out.println("不管是否有异常,我都执行");
		}
		
		System.out.println("******* 计算结束 *******");
	}

}


但是,在异常捕获的时候,有一个注意:捕获更细的异常需要放在捕获更粗的异常之前


package org.exceptiondemo;

public class ExceptionDemo02{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 0 ;
		int j = 0;
		System.out.println("******* 计算开始 *******");
		try{
			i = Integer.parseInt(args[0]);
			j = Integer.parseInt(args[1]);
			System.out.println("计算结果:"+i/j);
		}catch(Exception e){
			System.out.println("出现了数据学异常:"+e);
		}finally{
			System.out.println("不管是否有异常,我都执行");
		}
		
		System.out.println("******* 计算结束 *******");
	}

}



throws 关键字

在程序的方法声明处可以使用throws 关键字,使用此关键字的最大好处:在方法中不处理任何的异常,而交给被调用处处理。


package org.exceptiondemo;

class Math{
	public int div(int i,int j)throws Exception{
		 int temp = i/j;
		 return temp;
	}
}

public class ExceptionDemo03 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Math mt = new Math();
		try{
			mt.div(10, 0);
		}catch(Exception e){
			System.out.println("异常:"+e);
                        //e.printStackTrace(); 异常明细
               }
	}

}


package org.exceptiondemo;

class Math{
	public int div(int i,int j)throws Exception{
		 int temp = i/j;
		 return temp;
	}
}

public class ExceptionDemo03 {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		Math mt = new Math();
		mt.div(10, 0);
	}

}
如果在主方法处使用了throws 关键字的话,则所有的异常交给最大的头:JVM进行处理


throw 关键字

在程序中可以使用throw 关键字人为抛出一个异常

在异常的处理中,实际上每次产生异常的时候都是产生了一个异常类的实例化对象。那么此时,也可以通过抛出异常对象的方式完成。


package org.exceptiondemo;

public class ExceptionDemo04 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try{
			throw new Exception("抛着玩"); //人为抛出
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}


异常的标准格式

进入方法执行计算前要有输出

此方法执行完之后也要有输出

如果有异常,则交给被调用处处理


package org.exceptiondemo;

class Math1{
	public int div(int i,int j)throws Exception{
		int temp = 0;
		 System.out.println("计算前显示-------------");
		 try{
			 temp = i/j;
		 }catch(Exception e){
			 throw e;
		 }finally{
			 System.out.println("计算后显示-------------");
		 }
		 return temp;
	}
}

public class ExceptionDemo05 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Math1 mt = new Math1();
		try{
			System.out.println(mt.div(10,0));
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}


自定义异常

一个类只要继承了Exception则就表示一个自定义异常,当发现系统中提供的异常不够的时候就可以这样做


package org.exceptiondemo;

class MyException extends Exception{
	public MyException (String msg){
		super(msg);
	}
}

public class MyExceptionDemo01 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try{
			throw new MyException("自定义异常");
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}


分享到:
评论

相关推荐

    java异常处理习题

    Java 异常处理习题 Java 异常处理是 Java 编程语言中的一种重要机制,用于处理程序在运行时可能出现的错误或异常情况。下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出...

    java异常处理java异常处理

    java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理

    高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架

    本文将从 Java 异常的基本概念和语法开始,讲述 Java 异常处理的基本知识,分析 Java 异常体系结构,对比 Spring 的异常处理框架,阐述异常处理的基本原则,并提出了自己处理一个大型应用系统异常的思想,并通过设计...

    Java异常处理

    ### Java异常处理 #### 一、异常的基本概念 在编程领域中,异常是指程序在运行过程中遇到的问题或错误状态,这些问题通常会导致程序无法按照预期的方式继续执行。在Java语言中,异常处理是一种重要的机制,用于...

    java 异常处理ppt

    Java异常处理是编程中至关重要的一个环节,它允许开发者优雅地处理程序运行时可能出现的错误,确保程序的健壮性和稳定性。Java中的异常处理机制基于一个独特的概念——异常(Exception),这是一种表示程序运行中...

    Java异常处理体系

    这个主题,"Java异常处理体系",涉及到Java如何优雅地处理程序运行时的异常,确保程序的健壮性和稳定性。这篇博文链接(已提供但无法直接访问)可能详细解释了Java异常处理的基本概念、机制以及最佳实践。 Java异常...

    浅析JAVA异常处理机制.pdf

    ### 浅析JAVA异常处理机制 #### 一、Java异常处理机制概述 异常处理是Java语言中的一个重要机制,它能够确保程序在遇到不可预料的情况时仍能维持稳定运行。异常处理主要包括三个方面:捕获异常、控制程序流程以及...

    java 异常处理 代码实例

    Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地运行,而不是突然崩溃。本篇文章将深入探讨Java异常处理的概念、机制以及如何通过代码实例进行有效的异常管理。 Java异常处理的核心...

    Java异常处理终结篇——如何进行Java异常处理设计 - 望远的个人页面 - 开源中国社区1

    Java异常处理设计是Java编程中一个至关重要的环节,它直接影响到程序的稳定性和可维护性。在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时...

    Java 异常处理的 9 个最佳实践

    Java异常处理的9个最佳实践涵盖了开发者在进行Java编程时应当遵循的一系列规则和方法,以确保代码的健壮性和可维护性。异常处理是编程中的一个重要部分,它能够帮助我们更有效地管理和响应程序运行时的错误情况。 ...

    Java异常处理,非常适合Java爱好者

    Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时可能出现的错误和不正常状况。在Java中,异常是程序执行过程中出现的问题,它们中断了正常的控制流程,使得程序无法继续按照预期的...

    java高端技术课程--Java异常处理详解

    Java异常处理是Java编程中一个至关重要的概念,它关乎到程序的健壮性和稳定性。在Java语言中,异常处理提供了一种机制,使得程序在遇到错误或非正常情况时能够优雅地处理问题,而不是突然崩溃。这个“java高端技术...

    高效java异常处理机制

    通过遵循上述最佳实践,开发者可以编写出更健壮、可维护的Java代码,有效地利用Java异常处理机制来提高程序的稳定性。同时,阅读并理解"Effective Java Exceptions"文档可以帮助进一步深化对Java异常处理的理解。

    java异常处理例题代码.pdf

    从给定的文件内容中可以看出,这是一系列Java程序示例,它们用来说明Java异常处理机制。异常处理是Java语言中一个非常重要的部分,它能够帮助程序在遇到错误情况时仍然可以正常运行或者优雅地退出。这些程序通过各种...

    java异常处理练习题

    java异常练习题,北大青鸟学士后课后练习,主要是异常处理的小测验

    Java 异常处理的误区和经验总结

    以下是对Java异常处理的一些误区和经验总结。 **误区一:过度使用try-catch块** 有些开发者习惯于在每个函数的开始部分都套用try-catch块,以为这样可以捕捉所有可能出现的异常。实际上,这种做法使得代码变得混乱...

    零基础学Java异常处理

    零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理...

Global site tag (gtag.js) - Google Analytics