Java中的try、catch、finally块简单的解析

package com.wangzhu;

import java.util.HashMap;
import java.util.Map;

/**
 * 在try、catch、finally块中,若try中有return语句,则返回try中变量的值,<br/>
 * 不管try块外是否对该变量进行了修改, 都不影响try中return的返回值。<br/>
 * 若finally中有return语句,则忽略try、catch块中的return语句。<br/>
 * 若finally中抛出异常,则整个try-catch-finally块中抛出异常。<br/>
 *
 * 注意:<br/>
 * 尽量在try或者catch中使用return语句,通过finally快中达到对try或者catch返回值的修改是不可行的。<br/>
 * finally块中避免使用return语句,因为finally快中如果使用return语句,<br/>
 * 会显示的消化掉try、catch块中的异常信息, 屏蔽了错误的发生。<br/>
 * finally块中皮面再次抛出异常,否则整个try-catch-finally块的方法抛出异常,并会消化掉try、catch块中的异常。<br/>
 *
 * @author wangzhu2014-7-20下午8:48:43
 *
 */
public class CatchDemo1 {
    /**
     * 返回:try
     *
     * @return
     */
    public static String test() {
        String str = "";
        try {
            str = "try";
            return str;
        } catch (Exception e) {
            str = "catch";
            return str;
        } finally {
            str = "finally";
        }
    }

    /**
     * 返回:finally
     *
     * @return
     */
    public static String test1() {
        String str = "";
        try {
            str = "try";
            return str;
        } catch (Exception e) {
            str = "catch";
            return str;
        } finally {
            str = "finally";
            return str;
        }
    }

    /**
     * 返回:catch
     *
     * @return
     */
    public static String test2() {
        String str = "";
        try {
            str = "try";
            Integer.parseInt(null);
            return str;
        } catch (Exception e) {
            str = "catch";
            return str;
        } finally {
            str = "finally";
        }
    }

    /**
     * 返回:finally
     *
     * @return
     */
    public static String test3() {
        String str = "";
        try {
            str = "try";
            Integer.parseInt(null);
        } catch (Exception e) {
            str = "catch";
            return str;
        } finally {
            str = "finally";
            return str;
        }
    }

    /**
     * 返回:finally
     *
     * @return
     */
    public static String test4() {
        String str = "";
        try {
            str = "try";
            Integer.parseInt(null);
            return str;
        } catch (Exception e) {
            str = "catch";
            Integer.parseInt(null);
            return str;
        } finally {
            str = "finally";
            // 若去掉return语句则最后会报异常
            return str;
        }
    }

    /**
     * 返回:finally
     *
     * @return
     */
    public static String test5() {
        String str = "";
        try {
            str = "try";
            Integer.parseInt(null);
            return str;
        } catch (NullPointerException e) {
            str = "catch";
            return str;
        } finally {
            str = "finally";
            // 若去掉return语句则最后会报异常
            return str;
        }
    }

    public static String test6(Map<String, Object> map) {
        String str = "";
        try {
            str = "try";
            map.put(str, str);
            Integer.parseInt(null);
            return str;
        } catch (NullPointerException e) {
            str = "catch";
            map.put(str, str);
            return str;
        } finally {
            str = "finally";
            map.put(str, str);
            // 若去掉return语句则最后会报异常
            return str;
        }
    }

    public static void main(String[] args) {
        System.out.println("try: " + CatchDemo1.test());
        System.out.println("finally: " + CatchDemo1.test1());
        System.out.println("catch: " + CatchDemo1.test2());
        System.out.println("finally: " + CatchDemo1.test3());
        System.out.println("finally: " + CatchDemo1.test4());
        System.out.println("finally: " + CatchDemo1.test5());
        Map<String, Object> map = new HashMap<String, Object>();
        System.out.println("finally: " + CatchDemo1.test6(map));
        for (String key : map.keySet()) {
            System.out.println(key + "===" + map.get(key));
        }
    }
}

Java中的try、catch、finally块简单的解析

时间: 2024-12-31 06:11:49

Java中的try、catch、finally块简单的解析的相关文章

在java中的Try Catch块-------------异常处理(2)

1. Try块是什么? Try块是一块可能产生异常的代码块,一个Try块可能跟着Catch块或者Finally块,或者两者. Try块的语义: try{ //statements that may cause an exception } 2. Catch块是什么? 一个Catch块关联一个Try块,如果在Try块中有一个特定类型的异常发生,则响应的Catch块会执行,例如, 如果在Try块中arithmmetic exception发生,那么对应arithmmetic exception的Ca

【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析

这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处理,即处理异常代码 } 代码区如果有错误,就会返回所写异常的处理. 首先要清楚,如果没有try的话,出现异常会导致程序崩溃.而try则可以保证程序的正常运行下去,比如说: try { int i = 1/0; } catch(Exception e) { ........ } 一个计算的话,如果除数

5.27 java中try,catch,throw,throws,finally

http://blog.sina.com.cn/s/blog_4f1c99de0100tyty.html try{//代码区}catch(Exception e){//异常处理}代码区如果有错误,就会返回所写异常的处理. 首先要清楚,如果没有try的话,出现异常会导致程序崩溃.而try则可以保证程序的正常运行下去. Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally.JB的在线帮助中对这几个关键字是这样解释的:Throws:  Lists t

java中成员变量、代码块、构造函数执行顺序

1.java虚拟机运行程序,首先需要装载类,安装现装载父类,初始化父类的静态代码块和静态成员变量 再load子类.初始化子类静态代码块和成员变量 2.load完毕父类与子类后,从main函数入口执行程序,先输出,接着new实例化Beetle类,则先实例化父类Insect,实例化父类时,先初始化非静态成员变量和非静态代码块,接着执行父类构造方法 再实例化子类,实例化子类时,先初始化非静态成员变量和非静态代码块,接着执行子类构造方法. package it.xiangnan.test; public

java中try 与catch的使用

(2011-10-08 17:08:43) 转载▼ 标签: 杂谈 分类: Java try{//代码区}catch(Exception e){//异常处理}代码区如果有错误,就会返回所写异常的处理. 首先要清楚,如果没有try的话,出现异常会导致程序崩溃.而try则可以保证程序的正常运行下去,比如说:try{int i = 1/0;}catch(Exception e){........}一个计算的话,如果除数为0,则会报错,如果没有try的话,程序直接崩溃.用try的话,则可以让程序运行下去,

java 中的JDK封装的数据结构和算法解析(集合类)----链表 List 之 LinkedList

List 只要有两个实现类(ArrayList 和linkedList ),ArryList是基于数组实现,LinkedList是基于链表实现,下面是小弟对LinkedList的一点理解: LinkedList :基于链表实现的集合        双链接列表实现{ @code  List}和{ @code   Deque} 接口.实现了所有可选列表操作,和许可元素(including{ @code  null}). 首先对实现的接口分析一下: Deque  (双端队列): 这种队列允许在队列头和

Java中的try catch finally

在任何一本Java教材中,异常处理都是作为单独的章节讲解的,足可见其分量. 而真正的能够用好这个知识,只有经历实际项目的开发才会有点体会. 1.try catch finally的执行顺序 (1).一般情况下:try----catch----finally呢 (2).如果try中有return:try----finally----return (3).如果catch中有return:try----catch ----finally----return 在后两种情况下,reurn会被暂存在栈里面,

java中利用commons-email-1.2.jar实现简单的发邮件

1.首先引入commons-email-1.2.jar包 2.直接看代码吧commons-email-1.2.jar中已经为我们已经封装好了方法 a.先来一个简单的不能发附件的 public class TestCommonEmail { public static void main(String[] args) { SimpleEmail simpleEmail = new SimpleEmail(); // 设置使用发送邮件的邮件服务器若使用qq是smtp.qq.com前提是qq已经开通s

Java中sychronized方法与sychronized块区别

一.举几个栗子?? 1.当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行.另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块. 2.当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块. 3.当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对ob