Java实例-异常处理

1、Java 实例 - 异常处理方法:使用 System 类的 System.err.println() 来展示异常的处理方法。

public class Exception_Error {

public Exception_Error() {

try {

throw new Exception("My Exception");

}catch (Exception e) {

System.err.println("Caught Exception");

System.err.println("getMessage():" + e.getMessage());

System.err.println("getLocalizedMessage():" + e.getLocalizedMessage());

System.err.println("toString():" + e);

System.err.println("printStackTrace():");

e.printStackTrace();

}

}

}

运行结果:

2、Java 实例 - 多个异常处理(多个catch):

    声明异常时,建议声明更为具体的异常,这样可以处理的更具体

    对方声明几个异常,就对应几个catch块, 如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面

public class Exception1 {

public int div(int a,int b)throws ArithmeticException,ArrayIndexOutOfBoundsException

//在功能上通过throws的关键字声明该功能可能出现问题

    {

int []arr =new int [a];

System.out.println(arr[4]);//制造的第一处异常

        return a/b;//制造的第二处异常

    }

}

·····································································································

public class ExceptionTest1 {

public ExceptionTest1()//throws Exception

    {

Exception1 d =new Exception1();

try

        {

int x = d.div(4,0);//程序运行截图中的三组示例 分别对应此处的三行代码

//int x = d.div(5,0);

//int x = d.div(4,1);

            System.out.println("x="+x);

}

catch (ArithmeticException e)

{

System.out.println(e.toString());

}

catch (ArrayIndexOutOfBoundsException e)

{

System.out.println(e.toString());

}

catch (Exception e)//父类 写在此处是为了捕捉其他没预料到的异常 只能写在子类异常的代码后面

//不过一般情况下是不写的

        {

System.out.println(e.toString());

}

System.out.println("Over");

}

}

运行结果:

3、Java 实例 - Finally的用法:

    Java 中的 Finally 关键一般与try一起使用,在程序进入try块之后,无论程序是因为异常而中止或其它方式返回终止的,finally块的内容一定会被执行 。

public class ExceptionTest2 {

public ExceptionTest2() {

doTheWork();

}

public void doTheWork() {

Object o =null;

for (int i=0; i<5; i++) {

try {

o = makeObj(i);

}

catch (IllegalArgumentException e) {

System.err.println

("Error: ("+ e.getMessage()+").");

return;

}

finally {

System.err.println("都已执行完毕");

if (o==null)

System.exit(0);

}

System.out.println(o);

}

}

public Object makeObj(int type)

throws IllegalArgumentException {

if (type ==1)

throw new IllegalArgumentException

("不是指定的类型: " + type);

return new Object();

}

}

运行结果:

4、Java 实例 - 使用catch 处理异常:使用 catch 来处理异常的方法。

public class Exception_Catch {

public Exception_Catch() {

int array[]={20,20,40};

int num1=15,num2=10;

int result=10;

try{

result = num1/num2;

System.out.println("结果为 " +result);

for(int i =5;i >=0; i--) {

System.out.println ("数组的元素值为 " +array[i]);

}

}

catch (Exception e) {

System.out.println("触发异常 : "+e);

}

}

}

运行结果:

5、Java 实例 - 多线程异常处理:

public class Threadsextends Thread{

public void run(){

System.out.println("Throwing in " +"MyThread");

throw new RuntimeException();

}

}

··············································································

public class Exception_Threads {

public Exception_Threads(){

Threads t =new Threads();

t.start();

try{

Thread.sleep(1000);

}

catch (Exception x){

System.out.println("Caught it" + x);

}

System.out.println("Exiting main");

}

}

运行结果:

6、Java 实例 - 获取异常的堆栈信息:

public class Exception_GetStack {

public Exception_GetStack(){

int array[]={20,20,40};

int num1=15,num2=10;

int result=10;

try{

result = num1/num2;

System.out.println("The result is" +result);

for(int i =5; i>=0; i--) {

System.out.println("The value of array is" +array[i]);

}

}

catch (Exception e) {

e.printStackTrace();

}

}

}

运行结果:

7、Java 实例 - 重载方法异常处理:

public class Exception_Overload {

public Exception_Overload() {

try{

System.out.println(method(10,20.0));

System.out.println(method(10.0,20));

System.out.println(method(10.0,20.0));

System.out.println(method(10));

}

catch (Exception ex){

System.out.println("exception occoure: "+ ex);

}

}

double method(int i)throws Exception{

return i/0;

}

boolean method(boolean b) {

return !b;

}

static double method(int x,double y)throws Exception  {

return x + y ;

}

static double method(double x,double y) {

return x + y -3;

}

}

运行结果:

8、Java 实例 - 链试异常:使用多个 catch 来处理链试异常。

public class Exception_ChainTest {

public Exception_ChainTest()throws Exception  {

int n=20,result=0;

try{

result=n/0;

System.out.println("结果为"+result);

}

catch(ArithmeticException ex){

System.out.println("发算术异常: "+ex);

try {

throw new NumberFormatException();

}

catch(NumberFormatException ex1) {

System.out.println("手动抛出链试异常 : "+ex1);

}

}

}

}

运行结果:

9、Java 实例 - 自定义异常:通过继承 Exception 来实现自定义异常。

public class Exception2extends Exception{

public Exception2(String s) {

super(s);

}

}

···········································································

public class ExceptionTest3 {

public ExceptionTest3(){

try {

method();

}

catch(Exception2 e) {

System.out.println(e.getMessage());

}

}

void method()throws Exception2 {

throw new Exception2("Wrong input");// 抛出自定义的类

    }

}

运行结果:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容