Java exception 处理

先普及下什么是异常:

异常就是程序非正常结束,不按我们的处理逻辑执行下去了 导致程序中断的情况。

一般来说,一开始写程序犯错基本上就是 空指针NullPointerException 数组越界 参数异常

其实Java添加异常处理机制 是为了把异常和正常代码隔离开来,保证程序的健壮性和完整性

首先看段代码

public static void main(String[] args){

try {
    ArrayList<Integer> nin = new ArrayList<Integer>();
    nin.add(312);
    nin.add(3122);
    nin.add(3112);
    System.out.println(nin.get(8));
    
    } catch (Exception e) {
        System.out.println("Exception");
        e.printStackTrace();
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println("ArrayIndexOutOfBoundsException");
        e.printStackTrace();
    }
}

     哎....我去    代码会编译不过去。

    

public static void main(String[] args) throws NullPointerException {
		show();
	}

        public static int[] nu = null;

	public static void show() {
		System.out.println(doSomething());
		try {
			System.out.println(nu[3]);
		} catch (NullPointerException e) {
			System.out.println("NullPointerException -");
			e.printStackTrace();

		}catch (Exception e) {
			System.out.println("Exception -");
			e.printStackTrace();
		}
	}

    输出结果:

NullPointerException -

java.lang.NullPointerException

at com.tz.TestException.show(TestException.java:26)

at com.tz.TestException.main(TestException.java:16)



原来Java中catch是按顺序往下匹配的,而一旦catch到异常符合要求,就会直接跳出去,有finally就会执行它,没有则直接跳出去,不再执行任何东西,所以catch异常时应该有个顺序的。

catch代码块应该是 从小范围的到大范围的异常  顺序往下写的。

public static int[] nu = null;
public static void show() throws NullPointerException {

    try {
        System.out.println(nu[3]);
    }catch (Exception e) {
    	System.out.println("");
	e.printStackTrace();
    }
}

下面这段代码

Exception -

java.lang.NullPointerException

at com.tz.TestException.show(TestException.java:26)

at com.tz.TestException.main(TestException.java:16)

public static int[] nu = null;
public static void show()  {
    
    System.out.println(nu[3]);
    
    try {
        
    }catch (Exception e) {
    	System.out.println("Exception -");
	e.printStackTrace();
    }
}

下面这段代码

Exception in thread "main" java.lang.NullPointerException

at com.tz.TestException.show(TestException.java:23)

at com.tz.TestException.main(TestException.java:16)

所以try......catch的是它自己囊括的代码出现的异常,方法上throws异常时方法里面的异常;

try catch里面的异常 由它抛出,不在catcha里面代码出现的异常 由方法上的throws Exception抛出;多个catch异常之间,如果存在父子关系,是先写子异常在上面,父级异常在下面,这种编译才不会出错;

Java异常结构图如下:

由上面可以看出 Throwable分两种 一种是异常 一种是错误(这种情况程序基本就跪了 恢复不了)

Java异常又分为两种   checked异常(编译时异常)和Runtime异常 (运行时异常)


异常处理规则:

try 捕获异常  --> catch 处理异常 或者自定义异常逻辑处理代码 --> finally 结束时操作的事

怎么抛出异常?

        1. try....catch 

2. 方法上 throws 异常

3. 代码块里面  throw new XXXException

4. 代码块里面  throw new XXXException 框架统一处理捕获到的异常信息

处理抛出方式:

        (1) 如果你很明确的知道怎么处理异常或者可能会出现什么异常 , 应该用try....catch 的方式抛出异常并写下处理异常代码

(2) 如果不知道有什么异常, 那就在方法上抛出异常,多个异常逗号隔离开就好了

注意: Java 在对(RunTimeException)运行时异常 就算你自己不捕获抛出处理  它也会帮你抛出来   其实.....现在Java7开始项目大多数是把异常抛出来最顶部 也就是控制层C再处理的

时间: 2024-12-13 13:30:06

Java exception 处理的相关文章

eclipse启动tomcat错误:A Java Exception has occurred(转)

在tomcat bin目录下执行startup.bat可以正常启动,但在eclipse下安装了tomcat插件并且配置tomcat路径后启动且报错:A Java Exception has occurred 解决方法,在eclipse中[window][Preferences]找到[tomcat][JVM Settings],在右边的配置页中找到[Classpath (Before generated classpath)],点击[jar/Zip]在弹出的文件选择框中选择tomcat目录下的bi

JAVA Exception 和 Error 的理解

结构: Error类和Exception类都继承自Throwable类. Error的继承关系: java.lang.Object > java.lang.Throwable > java.lang.Error Exception的继承关系: java.lang.Object > java.lang.Throwable > java.lang.Exception 定义: Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资

eclipse启动tomcat错误:A Java Exception has occurred

在tomcat bin目录下执行startup.bat可以正常启动,但在eclipse下安装了tomcat插件并且配置tomcat路径后启动且报错:A Java Exception has occurred 解决方法,在eclipse中[window][Preferences]找到[tomcat][JVM Settings],在右边的配置页中找到[Classpath (Before generated classpath)],点击[jar/Zip]在弹出的文件选择框中选择tomcat目录下的bi

myeclipse启动tomcat会出现 a java exception has occured错误 的解决方法

在浏览器中可以打开tomcat,结果在myeclipse启动tomcat会出现 a java exception has occured错误 ,之后出现一个Classloader.class的文件,关闭tomcat又出现 a java exception has occured错误 . 报错界面: 1.JVM报错,首先查看Java安装,环境变量有没有问题,java和javac命令运行正常. 2.查阅网上资料,可能是版本问题. 3.将tomcat---bin目录下的tomcat-juli.jar包

MyEclipse 运行弹出A Java Exception has occurred.

问题描述 A Java Exception has occurred. 问题原因 这个问题是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行而产生的错误 原文地址:https://www.cnblogs.com/7q4w1e/p/10015516.html

安装kettle遇到的一些问题。 a java exception has occurred;

今天在安装kettle的时候出现了几个问题,在这里记录一下: kettle的安装: (1)去官网下载http://kettle.pentaho.org 对于kettle来说的话,解压即安装.下载解压zip包就可以.安装kettle需要配置jdk.对于jdk的配置这里不做赘述. 然后在windows环境下直接点击Spoon.bat 就可以运行.我的在运行的时候就出现了下面的错误 a java exception has occurred 出现这个问题肯定是jdk的问题,我的问题是我安装了两个jdk

java Exception体系、分类、捕获、处理、自定义

1.异常概述 异常:就是程序在运行时出现的不正常现象 异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类来描述,并封装成对象 其实就是java对不正常情况描述后的对象体现 简单说:异常:把程序封装成对象 对问题的划分:两种:一种是严重的问题,一种是非严重的问题 对于严重的java通过Error类来进行描述 对于Error一般不编写真正的代码进行处理 对于非严重的,java通过Exception类进行描述 对于Exception可以使用针对性的处理方式进行处理 无论Error或者E

(转)java Exception层次结构详解

转自:http://www.importnew.com/14688.html 1. JAVA异常层次结构 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常.因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件.当条件生成时,错误将引发异常. Java异常类层次结构图: 图1 Java异常类层次结构图 在 J

Java Exception异常介绍

 一:介绍java异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常.因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件.当条件生成时,错误将引发异常. 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出).Throwable 指定代码中可用异常传播机制通过 Java 应用程序