java 内存溢出java 异常是否需要try在程序能不能获取到,例如try{}catch(){}等

&今天我给大家讲解一下java的的错误和异常处理机制以及相关异常的执行顺序问题。如有不足的地方,欢迎批评指正~
1、首相简单介绍一下java中的错误(Error)和异常(Exception)
& & 错误和异常的介绍:
&&& 在java.lang软件包中有一个java.lang.Throwable类,这个类是java中所有错误和异常的超类。
&&& 在java中错误和异常的继承主要有两个: 分别为Error和Exception 这两个。
&&&&Error:&&&&&&&& 是java中所有错误类的父类,就是jvm出现错误,以及系统蹦溃等现象,这些错误没办法通过程序来处理,对于系统错误,一般不需要开发
&&&&&&&&&&&&&&&&&&&& 人员处理(也无法处理),&比如内存溢出(Out of Memory)和线程死锁等系统问题。所以在程序中需要使用catch来捕捉处理这类的错误或者使用throw来抛出相
&&&&&&&&&&&&&&&&&&&& 关的异常。
&&& Exception:& 又可以分为checkedException(编译时异常) 和RuntimeException(运行时异常) 这两种异常,checkedException异常在进行编译的
&&&&&&&&&&&&&&&&&&&& 时候就可以知道会不会发生异常,如果不对这些异常进行抛出、捕获的话就不能通过编译,如在使用java的io读取文件的时候,可能会会出现
&&&&&&&&&&&&&&&&&&&& 所读取的文件不存在的情况&对于,对于这类编译时的异常必须手动去处理它们(捕获或者抛出)。否则的话是无法正常通过编译器的。&而
&&&&&&&&&&&&&&&&&&&&&RuntimeException就是运行的时候出现的异常,在之前你是没办法确定是不是会出现异常。这类异常仅仅在程序运行的过程中才会发现。
&&&&&&&&&&&&&&&&&&&&&比如数组下标越界(ArrayIndexOutOfBoundsException),强制转换报错(ClassCastException,一部分),空指针异常(NullPointerException)
&&&&&&&&&&&&&&&&&&& 除数为零(/ by zero)&对于这类运行时的异常是否抛出, 由用户根据自身的情况&决定是否抛出异常。java并不强制要求用户&一定处理。
&& 2、异常处理过程
& 把会出现异常的程序段放在try中,当抛出异常的时候就会在系统中生成一个异常对象,然后进行查找捕获这个异常,然后进行处理这个异常,处理之后接着执行下面的程序。
出现异常之后如果没有进行捕获处理系统就会直接将这个异常栈的跟踪信息直接打印出来之后就结束这个程序的执行。
&&&& 对于异常的处理方式有两种分别为:try{}catch{}finally{}和throws下面简单说一下这两者的区别和联系
&&&& 请先看下面的例子:
public class Test{
public static void main(String[] args){
Test2 test2 = new Test2();
System.out.println("invoke the method begin!");
test2.method();
System.out.println("invoke the method end!");
}catch(Exception e){
System.out.println("catch Exception!");
class Test2{
public void method() throws Exception{
System.out.println("method begin!");
int a = 10;
int b = 0;
int c = a/b;
System.out.println("method end!");
很明显,答案出来了:
invoke the method begin!
method begin!
catch Exception!
&&&& 对于try{}catch{}finally{}而言,用户可能确定知道代码会出现相关的异常,把有可能出现问题的地方放到try中去执行,如果一旦出现异常,立刻终止当前代码的继续
&&&& 执行,转而去执行catch{}里面的内容。对于这类异常用户已经处理了,不会在向上抛出。
&&& 对于throws而言,一般使用在方法名的后面,使用throws关键字的时候,一般是开发者不确定出现什么异常或者出现异常的情况可能有多种。这时开发者在方法后面加  &&&&throws关键字抛出相关的异常。对于调用该方法的其它开发者者必须捕获这个异常或者继续throws这个异常,把这个异常传递下去,交给其对应的父类去处理。
&&& 需要注意throw关键字和throws关键字是有区别的。throw一般用于方法中,抛出用户自定义的异常如 throw new MyException("用户自定义异常")。
&&& 而throws是用在方法名的后面,通知使用该方法的人,当前方法有可能抛出异常。
&&&& 如果简单的理解可以这样看:对于throws可以理解为抛出,抛出给别人,自己不处理。而try{}catch{}finally{}则可以理解为截断,开发者自己处理这个异常。
&&&& 3、异常处理的执行顺序(针对try{}catch{}finally{}而言)
&&&& 对于try{}catch{}finally{}而言,,它们的执行顺序很简单,如果在try{}中捕获相应的异常,中断当前代码的执行,转而去执行catch{}中的内容,最后去执行
&&& finally{}中方法,一般来说finally中的方法都是会被执行的,其中finally中很大程度上用于资源的释放。
&&& 下面讲解一些我们java程序员需要注意的地方。
&&&&&&&&& a、finally中的代码总是会执行吗?
&&&&&&&&&&&& 答:no,如果一个方法内在执行try{}语句之前就已经return了,那么finally语句指定不会执行了。因为它根本没有进入try语句中
&&&&&&&&&&&&&&&&&&&&&&& 如果在一个try语句中调用System.exit(0);方法,那么就会退出当前java虚拟机,那么finally也就没有执行的机会了。
&&&&&&&&& b、finally在return之前执行还是在return之后执行?
&&&&&&&&&&& 答:很多人可能会说在return执行之前执行。我的答案是在return中间执行,是不是很特别,请按下面的例子:
&&&&&&&&&&&
package com.yonyou.
class Test{
public static void main(String[] args) {
System.out.println(method());
public static int method(){
}catch(Exception e)
  请问输出的结果是多少呢?
&&& 正确答案是:1
&& 下面我来讲解一下这个程序的执行过程,
&&& 首先程序在执行到try{}语句中的return方法后,就会先返回相应的值,并把相应的值存储在一个临时栈中去保存这个结果。这时临时栈中存储的值为1。
&&& 但是程序不会立刻返回,转而回去执行finally中的方法,++x,在finally执行完后,方法全部执行完,这时会再次调用return方法,注意这时
&& 不在是返回值,而是告诉主调程序,被调程序已经执行完了,你可以接着去执行你主程序的其它方法了。但是请注意,此时返回的值还是原来保存在临时
&& 栈中的值1。
&为了更好的理解这个问题,我们看下面的程序:
package com.yonyou.
class Test{
public static void main(String[] args) {
System.out.println(method());
public static int method(){
}catch(Exception e)
  这时的正确答案又是多少呢?
&&&& 没错是2,这里仅仅需要注意的是在try{}语句中执行到return 1 会在临时栈中存储值为1的变量。接着回去执行finally里面的内容,这时执行finally中的return 2;方法,这时
&&& 临时栈中的值就是变为 2,会覆盖原来临时栈中的值1.所以它的返回值为2。
&&&& c、finally方法是必须的吗?
&&&&&&&& 不是,开发者可以根据自身的情况去决定是否使用finally关键字。
&&& 好吧,今天就先到这里吧。
&&&&&&&&&&&&&&&&&&&&&&&
阅读(...) 评论()java try catch能捕获所有异常吗_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
java try catch能捕获所有异常吗
我有更好的答案
可以, try catch在java里面就是捕获异常的,肯定能捕获所有异常啊。
采纳率:79%
来自团队:
为您推荐:
其他类似问题
java的相关知识
换一换
回答问题,赢新手礼包中国领先的IT技术网站
51CTO旗下网站
JVM的内存溢出异常
在Java虚拟机规范的描述中,除了PC(程序计数器)寄存器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能。当发生OutOfMemoryError异常时,无法用try...catch捕捉。
作者:evan2012来源:evan2012的博客| 02:04
在Java虚拟机规范的描述中,除了PC(程序计数器)寄存器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能。当发生OutOfMemoryError异常时,无法用try...catch捕捉。
在开始讲解之前,在这里先简单介绍下虚拟机启动相关的一些内存设置参数。因为OutOfMemoryError异常发生,与这些参数的设置密切相关。
举例说明含义:
每个线程的java栈大小,一个线程java栈所有栈帧大小总和最大允许的尺寸128k。
表示JVM Heap(堆内存)最小尺寸128MB,初始分配
表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
-XX:PermSize=20M
设置方法区的初始大小
-XX:MaxPermSize=30M
设置方法区的最大值
Java栈溢出
在Java虚拟机规范中,对这个区域规定了两种异常状况:StackOverflowError和OutOfMemoryError异常。
1.StackOverflowError异常
每当java程序代码启动一个新线程时,Java虚拟机都会为它分配一个Java栈。Java栈以帧为单位保存线程的运行状态。当线程调用java方法时,虚拟机压入一个新的栈帧到该线程的java栈中。只要这个方法还没有返回,它就一直存在。如果线程的方法嵌套调用层次太多(如递归调用),随着java栈中帧的逐渐增多,最终会由于该线程java栈中所有栈帧大小总和大于-Xss设置的值,而产生StackOverflowError内存溢出异常。例子如下:
&&&&public&class&Test&{ &&&&&& &&&&&&private&int&count&=&0; && &&&&&&public&static&void&main(String[]&args)&{ &&&&&&&&&&new&Test().method(); &&&&&&} &&&&&& &&&&&&public&void&method()&{ &&&&&&&&&&System.out.println(++count); &&&&&&&&&&method(); &&&&&&} && &&}&
-Xss为128k。其中的一次测试结果为,当count的值累加到2312时,发生如下异常:
Exception&in&thread&&main&&java.lang.StackOverflowError &&&&&at&sun.nio.cs.UTF_8.updatePositions(UTF_8.java:58) &&&&&at&sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:392) &&&&&at&sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:447) &&&&&at&java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544) &&&&&at&sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:252) &&&&&at&sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106) &&&&&at&java.io.OutputStreamWriter.write(OutputStreamWriter.java:190) &&&&&at&java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111) &&&&&at&java.io.PrintStream.write(PrintStream.java:476) &&&&&at&java.io.PrintStream.print(PrintStream.java:547) &&&&&at&java.io.PrintStream.println(PrintStream.java:686) &&&&&at&jvm.Test.method(Test.java:17)&
修改-Xss为1280k。其中的一次测试结果为,当count的值累加到26888时,发生StackOverflowError异常。随着-Xss参数值的增大,可以嵌套的方法调用层次也相应增加。
综上所述,StackOverflowError异常是由于方法调用的层次太深,最终导致为某个线程分配的所有栈帧大小总和大于-Xss设置的值,从而发生StackOverflowError异常。
2.OutOfMemoryError异常
java程序代码启动一个新线程时,没有足够的内存空间为该线程分配java栈(一个线程java栈的大小由-Xss参数确定),jvm则抛出OutOfMemoryError异常。例子如下:
&&&&public&class&Test&{ &&&&&& &&&&&&public&static&void&main(String[]&args)&{ &&&&&&&&&&int&count&=&0; &&&&&&&&&&while&(true)&{ &&&&&&&&&&&&&&Thread&thread&=&new&Thread(new&Runnable()&{ &&&&&&&&&&&&&&&&&&public&void&run()&{ &&&&&&&&&&&&&&&&&&&&&&while&(true)&{ &&&&&&&&&&&&&&&&&&&&&&&&&&try&{ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Thread.sleep(5000); &&&&&&&&&&&&&&&&&&&&&&&&&&}&catch&(Exception&e)&{} &&&&&&&&&&&&&&&&&&&&&&} &&&&&&&&&&&&&&&&&&} &&&&&&&&&&&&&&});&& &&&&&&&&&&&&&&thread.start(); &&&&&&&&&&&&&&System.out.println(++count); &&&&&&&&&&} &&&&&&} && &&}&
-Xss为128k。其中的一次测试结果为,当count的值累加到11887时,发生如下异常:
Exception&in&thread&&main&&java.lang.OutOfMemoryError:&unable&to&create&new&native&thread &&&&&at&java.lang.Thread.start0(Native&Method) &&&&&at&java.lang.Thread.start(Thread.java:640) &&&&&at&jvm.Test.main(Test.java:20)&
修改-Xss为1280k。其中的一次测试结果为,当count的值累加到1270时,发生OutOfMemoryError异常。随着-Xss参数值的增大,java程序可以创建的总线程数越少。
Java堆溢出
Java堆用于储存对象实例。当需要为对象实例分配内存,而堆的内存占用又已经达到-Xmx设置的最大值。将会抛出OutOfMemoryError异常。例子如下:
&&&&public&class&Test&{ &&&&&& &&&&&&public&static&void&main(String[]&args)&{ &&&&&&&&&&int&count&=&0; &&&&&&&&&&List&Object&&list&=&new&ArrayList&Object&(); &&&&&&&&&&while&(true)&{ &&&&&&&&&&&&&&list.add(new&Object()); &&&&&&&&&&&&&&System.out.println(++count); &&&&&&&&&&} &&&&&&} && &&}&
-Xmx为5m。其中的一次测试结果为,当count的值累加到297868时,发生如下异常:
Exception&in&thread&&main&&java.lang.OutOfMemoryError:&Java&heap&space &&&&&at&java.util.Arrays.copyOf(Arrays.java:2760) &&&&&at&java.util.Arrays.copyOf(Arrays.java:2734) &&&&&at&java.util.ArrayList.ensureCapacity(ArrayList.java:167) &&&&&at&java.util.ArrayList.add(ArrayList.java:351) &&&&&at&jvm.Test.main(Test.java:15)&
修改-Xmx为10m。其中的一次测试结果为,当count的值累加到670205时,发生OutOfMemoryError异常。随着-Xmx参数值的增大,java堆中可以存储的对象也越多。
方法区溢出
方法区用于存放java类型的相关信息,如类名、访问修饰符、常量池、字段描述、方法描述等。在类装载器加载class文件到内存的过程中,虚拟机会提取其中的类型信息,并将这些信息存储到方法区。当需要存储类信息而方法区的内存占用又已经达到-XX:MaxPermSize设置的最大值。将会抛出OutOfMemoryError异常。对于这种情况的测试,基本的思路是运行时产生大量的类去填满方法区,直到溢出。这里需要借助CGLib直接操作字节码运行时,生成了大量的动态类。例子如下:
&&&&&public&class&Test&{ &&&&&&& &&&&&&&public&static&void&main(String[]&args)&{ &&&&&&&&&&&int&count&=&0; &&&&&&&&&&&while&(true)&{ &&&&&&&&&&&&&&&&Enhancer&enhancer&=&new&Enhancer(); &&&&&&&&&&&&&&&&enhancer.setSuperclass(Test.class); &&&&&&&&&&&&&&&&enhancer.setUseCache(false); &&&&&&&&&&&&&&&&enhancer.setCallback(new&MethodInterceptor()&{ &&&&&&&&&&&&&&&&&&&public&Object&intercept(Object&obj,&Method&method,&Object[]&args,& &&&&&&&&&&&&&&&&&&&&&MethodProxy&proxy)&throws&Throwable&{ &&&&&&&&&&&&&&&&&&&&&&&return&proxy.invoke(obj,&args); &&&&&&&&&&&&&&&&&&&} &&&&&&&&&&&&&&&&}); &&&&&&&&&&&&&&&&enhancer.create(); &&&&&&&&&&&&&&&&System.out.println(++count); &&&&&&&&&&&} &&&&&&&} &&& &&&}&
-XX:MaxPermSize为50m。其中的一次测试结果为,当count的值累加到3953时,发生如下异常:
Caused&by:&java.lang.OutOfMemoryError:&PermGen&space &&&&&at&java.lang.ClassLoader.defineClass1(Native&Method) &&&&&at&java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) &&&&&at&java.lang.ClassLoader.defineClass(ClassLoader.java:615) &&&&&...&8&more&
修改-XX:MaxPermSize为100m。其中的一次测试结果为,当count的值累加到8022时,发生OutOfMemoryError异常。随着-XX:MaxPermSize参数值的增大,java方法区中可以存储的类型数据也越多。
相关的参考资料:
1.深入Java虚拟机(原书第2版)
2.深入理解Java虚拟机:JVM高级特性与最佳实践
3.互联网相关的文章
原文链接:
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
热点头条热点热点热点
24H热文一周话题本月最赞
讲师:126510人学习过
讲师:119852人学习过
讲师:133560人学习过
精选博文论坛热帖下载排行
本书是一本从头至尾都使用现实世界例子讲述有关编写Web应用程序的书籍。WebWork所强调的内容是:利用框架实现你的项目,而不是被框架所阻碍...
订阅51CTO邮刊java中try{}catch{}和finally{}的执行顺序问题_博客园
当前位置: >
>java中try{}catch{}和finally{}的执行顺序问题
java中try{}catch{}和finally{}的执行顺序问题
& 作者:@ 小浩 & 来源: 博客园-xiohao &
&今天我给大家讲解一下java的的错误和异常处理机制以及相关异常的执行顺序问题。如有不足的地方,欢迎批评指正~
1、首相简单介绍一下java中的错误(Error)和异常(Exception)
& & 错误和异常的介绍:
&&& 在java.lang软件包中有一个java.lang.Throwable类,这个类是java中所有错误和异常的超类。
&&& 在java中错误和异常的继承主要有两个: 分别为Error和Exception 这两个。
&&&&Error:&&&&&&&& 是java中所有错误类的父类,就是jvm出现错误,以及系统蹦溃等现象,这些错误没办法通过程序来处理,对于系统错误,一般不需要开发
&&&&&&&&&&&&&&&&&&&& 人员处理(也无法处理),&比如内存溢出(Out of Memory)和线程死锁等系统问题。所以在程序中需要使用catch来捕捉处理这类的错误或者使用throw来抛出相
&&&&&&&&&&&&&&&&&&&& 关的异常。
&&& Exception:& 又可以分为checkedException(编译时异常) 和RuntimeException(运行时异常) 这两种异常,checkedException异常在进行编译的
&&&&&&&&&&&&&&&&&&&& 时候就可以知道会不会发生异常,如果不对这些异常进行抛出、捕获的话就不能通过编译,如在使用java的io读取文件的时候,可能会会出现
&&&&&&&&&&&&&&&&&&&& 所读取的文件不存在的情况&对于,对于这类编译时的异常必须手动去处理它们(捕获或者抛出)。否则的话是无法正常通过编译器的。&而
&&&&&&&&&&&&&&&&&&&&&RuntimeException就是运行的时候出现的异常,在之前你是没办法确定是不是会出现异常。这类异常仅仅在程序运行的过程中才会发现。
&&&&&&&&&&&&&&&&&&&&&比如数组下标越界(ArrayIndexOutOfBoundsException),强制转换报错(ClassCastException,一部分),空指针异常(NullPointerException)
&&&&&&&&&&&&&&&&&&& 除数为零(/ by zero)&对于这类运行时此文来自: 马开东博客
转载请注明出处 网址:
相关阅读:
来源:(微信/QQ:,微信公众号:makaidong-com) &&&&&& 欢迎分享本文,转载请保留出处!
&&&&&& 【原文阅读】:
上一篇:没有了
【相关文章】
每日最新文章
每日最热文章
本周最热文章
本月最热文章
本年最热文章
Powered by
Copyright &
, All Rights Reserved异常的捕获及处理
异常的概念:
在Java的异常处理机制中,引进了很多用来描述和处理异常的类,称为异常类。异常类定义中包含了该类异常的信息和对异常进行处理的方法。
在Java中,将异常情况分为Exception(异常)和Error(错误)两大类。
异常指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等。
所谓异常处理,就是指程序在出现问题时依然可以正确的执行完
异常类的层次和主要子类
异常类(java.lang.Exception)继承于java.lang.Object中的java.lang.Throwable类。异常可分为执行异常(RuntimeException)和检查异常(Checked Exceptions)两种 :
继承于RuntimeException
除了执行异常外,其余的Exception子类属于检查异常类
执行异常及其用途
包中多数异常的基类
算术错误,如除以
方法收到非法参数
数组下标出界
字符串越界
String转换为指定的数字类型
试图访问对象引用
试图违反安全性
不能加载请求的类
检查异常及其用途
异常的根类
不能找到文件
对类的访问被拒绝
请求的方法不存在
异常处理格式
异常处理方法有两种:
一种方法是使用try…catch…finally结构对异常进行捕获和处理;
另一种方法是通过throws和throw抛出异常。
捕获异常try-catch-finally
Java的异常处理是通过3个关键词来实现的:try-catch-finally。用try来执行一段程序,如果出现异常,系统抛出(throws)一个异常,可以通过它的类型来捕捉(catch)并处理它,最后一步是通过finally语句为异常处理提供一个统一的出口,finally所指定的代码都要被执行(catch语句可有多条;finally语句最多只能有一条,根据自己的需要可要可不要)。
可能出现异常的语句
异常类异常对象
异常类异常对象
异常的出口
1、try语句
捕获异常的第一步就是用try {…}语句指定了一段代码,该段代码就是一次捕获并处理异常的范围。在执行过程中,该段代码可能会产生并抛弃一个或多个异常,因此,它后面的catch语句进行捕获时也要做相应的处理。
2、catch语句
每个try语句必须伴随一个或多个catch语句,用于捕获try代码块所产生的异常并做相应的处理。 catch语句有一个形式参数,用于指明其所能捕获得异常类型,运行时系统通过参数值把被抛弃的异常对象传递给catch语句
3、finally语句
捕获异常的最后一步是通过finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态作统一的管理, finally所指定的代码都要被执行
int i = 10 ;
int j = 0 ;
System.out.println("========== 计算开始
int temp = i /
System.out.println("计算结果:
catch(ArithmeticException e){
System.out.println("出现了数学异常:
System.out.println("========== 计算结束
int i = 0 ;
int j = 0 ;
System.out.println("========== 计算开始
i = Integer.parseInt(args[0]) ;
j = Integer.parseInt(args[1]) ;
int temp = i /
System.out.println("计算结果:
}catch(ArithmeticException e){
System.out.println("出现了数学异常:
}catch(NumberFormatException e){
System.out.println("输入的不是数字:
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("输入的参数个数不对:
System.out.println("不管是否有异常,我都执行。
System.out.println("========== 计算结束
通过throws和throw抛出异常
throws方法:
throws关键字的最大好处是:在方法中不处理任何的异常,而交给被调用处处理。
类型 方法名(参数) throws 异常类
如:public int read() throws IOException { … }
throws子句中可以同时指明多个异常,说明该方法将不对这些异常进行处理,而是声明抛弃它们
public int div(int i,int j) throws ArithmeticException
// 除数为异常
return i /
public static void main(String args[]){
Math m = new Math() ;
int temp = m.div(10,0) ;
System.out.println(temp) ;
}catch(Exception e){
e.printStackTrace() ;
// 打印异常
在程序中可以使用throw关键字人为的抛出一个异常。
在异常处理中,实际上每次产生异常的时候都是产生了一个异常类的实例化对象。那么此时,也可以通过抛出异常对象的方式完成。
public static void main(String args[]){
throw new Exception("抛着玩的。// 人为抛出
}catch(Exception e){
System.out.println(e) ;
自定义异常类:
创建自定义异常类,继承类
//构造方法
{ super(ErrorMessagr); }
//父类构造方法
定义方法,抛出异常
if (number1 & 0 || number2 & 0)
//判断方法中参数是否满足指定条件
throw new MyException("不可以使用负数//错误信息
if (number1 & 10000 || number2 & 10000) //判断方法中参数是否满足指定条件
throw new MyException("数值太大了//错误信息
return (number1 + number2) / 2;
//将参数的平均值返回
public static void main(String args[])throws IOException
//try代码块处理可能出现异常的代码
int result = avg(-);
//调用方法
System.out.println("平均工资://将方法的返回值输出
catch (MyException e)
{ System.out.println(e) ;}
//输出异常信息
public static void main(String args[]){
int i = 0 ;
int j = 0 ;
System.out.println("========== 计算开始
i = Integer.parseInt(args[0]) ;
j = Integer.parseInt(args[1]) ;
int temp = i /
System.out.println("计算结果:
}catch(ArithmeticException e){
System.out.println("出现了数学异常:
}catch(NumberFormatException e){
System.out.println("输入的不是数字:
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("输入的参数个数不对:
}catch(Exception e){
System.out.println("其他异常:
System.out.println("** 不管是否有异常,我都执行。
System.out.println("========== 计算结束
注意:捕获更细的异常要放在捕获更粗的异常之前。
浏览 43183
浏览: 57988 次
来自: 深圳
字符串最常用4个操作:拼接 比较是否一样, 求长度 求第n个字 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 java程序异常处理 的文章

 

随机推荐