@firstmiki 2017年1月12日12:03:32

一、异常的产生和捕获:

 package Exception;
 /**
  * 演示了java中异常的产生和捕获
  * @firstmiki
  */
 import java.util.Scanner;

 public class Exception1 {

     public static void main(String[] args) {
         Scanner reader = new Scanner(System.in);

         try{
             String str = "123a";
             int output = Integer.parseInt(str); //这一句就产生了异常
             System.out.println(output);
         }
         catch(NumberFormatException e){
             System.out.println(e.getMessage());
             /*System.out.println(e.getClass());
             System.out.println(e.getStackTrace());*/
             e.printStackTrace();
         }
     }
 }

运行结果:

For input string: "123a"
java.lang.NumberFormatException: For input string: "123a"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at Exception.Exception1.main(Exception1.java:15)

二、异常语句:try...catch...finally...

注意下面代码中的16--19行:

 package Exception;
 /*
  * finally语句 (重要)
  */
 public class TestFinally {

     public static void testfinally(){
         String str = "123a";
         try{
             int a = Integer.parseInt(str);
             System.out.println(a);
         }catch(Exception e){
             e.printStackTrace();
             System.out.println("exception");
             return;  //返回,不再执行下面语句;
         }finally{
             //尽管加了return,奇怪的是,这里的finally语句被执行了;
             System.out.println("the end in finally");
         }
         System.out.println("end");
     }

     public static void main(String[] args) {
         testfinally();
     }
 }

运行结果:

java.lang.NumberFormatException: For input string: "123a"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at Exception.TestFinally.testfinally(TestFinally.java:10)
    at Exception.TestFinally.main(TestFinally.java:25)
exception
the end in finally

三、throws关键字:

注意看下面的注释说明:

 package Exception;
 /*throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
 当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给上层调用它的方法程序处理。*/
 public class Testthrows {
     //throws:把异常向外面抛
     public static void testthrows() throws NumberFormatException{
         String str = "123a";
         int a = Integer.parseInt(str);
         System.out.println(a);
     }

     public static void main(String[] args) {
         try{
             testthrows();
         }catch(Exception e){
             System.out.println("我们在这里处理了一个异常");
             e.printStackTrace();
         }
         System.out.println("这里还是被执行了");
     }
 }

运行结果:

我们在这里处理了一个异常
java.lang.NumberFormatException: For input string: "123a"这里还是被执行了

    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at Exception.Testthrows.testthrows(Testthrows.java:8)
    at Exception.Testthrows.main(Testthrows.java:14)

四、throw关键字:

 package Exception;
 /*throw是语句抛出一个异常。语法:throw (异常对象); 如:  throw e;
 一般会用于程序出现某种逻辑时程序员主动抛出某种特定类型的异常。*/
 public class Testthrow {
     public static void testthrow(int a) throws Exception{
         if(a==1){
             //直接抛出一个异常
             throw new Exception("这里a有异常");
         }
         System.out.println("这里a没有异常,a="+a);
     }
     public static void main(String[] args) {
         try {
             testthrow(1);
         } catch (Exception e) {
             e.printStackTrace();
         }
         try {
             testthrow(0);
         }catch (Exception e) {
             e.printStackTrace();
         }
     }

 }

运行结果:

java.lang.Exception: 这里a有异常
    at Exception.Testthrow.testthrow(Testthrow.java:8)
    at Exception.Testthrow.main(Testthrow.java:14)
这里a没有异常,a=0

java异常基础知识点的更多相关文章

  1. Java入门基础知识点总结(详细篇)

    Java入门基础知识点总结(详细篇)~~~~~目录 1.1 图解 1.1.1 Java基础知识点 1.1.2 Java基础语法的相关内容 1.2 关键字 1.3 标识符 1.3.1 标识符概念 1.3 ...

  2. 《Java笔记——基础知识点》

    Java笔记--基础知识点       位运算符操作的都是整型的数据. 位运算符是直接对整数的二进制进行计算. 整数不能进行逻辑运算. 运算符优先级别由高到低分别是:() > ! > 算术 ...

  3. java 学习基础知识点拾遗 导航页

    每种编程语言的知识点都是很多很杂的,java也是如此 相信很多人学习的过程中都是深一脚浅一脚,最基础的东西可能有些也不是非常确定 整理了最基本的一些知识点,可以说是java入门的-1层级别的,作为自己 ...

  4. java必备基础知识点

    Java基础 1. 简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机.冰箱等 2. 简单写出 ...

  5. Java异常基础Exception

    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...

  6. Java 异常基础详解

    目录 1. Java 中的异常 1.1 什么是异常? 1.2 什么是异常处理? 1.2.1 异常处理的优势 1.3 Java 异常类的层次结构 1.4 异常类型 1.5 检查和未检查异常之间的区别 1 ...

  7. JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]

    类的继承 Java只支持单继承,不允许多重继承- 一个子类只能有一个父类- 一个父类可以派生出多个子类这里写图片描述子类继承了父类,就继承了父类的方法和属性.在子类中,可以使用父类中定义的方法和属性, ...

  8. java异常基础整理

    1.try-catch e.printStackTrace(); 会打印出方法的调用痕迹,如此例,会打印出异常开始于TestException的第16行,这样就便于定位和分析到底哪里出了异常 2.使用 ...

  9. Java并发基础知识点详解

    1.synchronized与Lock区别 父类有synchtonized,子类调用父类的同步方法,是没办法同步的,因为synchronized不是修饰符,不会被继承下来. synchronized ...

随机推荐

  1. 请确保在编译时已将“AjaxControlToolkit.Properties.Resources.NET4.resources”正确嵌入或链接到程序集“AjaxControlToolkit”

    原文:请确保在编译时已将"AjaxControlToolkit.Properties.Resources.NET4.resources"正确嵌入或链接到程序集"AjaxC ...

  2. Swift编程语言学习4.1——周期

    Swift它提供了类似 C 流量控制结构语言,它包含运行多个任务的能力for和while周期.选择根据不同的编码分支机构的具体条件来运行if和switch声明,有控制流程跳转到其他代码break和co ...

  3. SQL SERVER – Import CSV File Into SQL Server Using Bulk Insert – Load Comma Delimited File Into SQL Server

    CSV stands for Comma Separated Values, sometimes also called Comma Delimited Values. Create TestTabl ...

  4. WINHTTP的API接口说明

    BOOL WINAPI WinHttpAddRequestHeaders(   _In_  HINTERNET hRequest,   _In_  LPCWSTR pwszHeaders,   _In ...

  5. Hudson+Maven+Svn搭建持续集成环境

    Hudson+Maven+Svn搭建持续集成环境 博客分类: 配置管理 mavenSVNTomcat项目管理配置管理 一.所用开发工具 1.    Hudson: Hudson 是一种革命性的开放源码 ...

  6. DataUml Design 课程6-DataUML Design 1.1版本号正式宣布(支持PD数据模型)

    从DataUML Design正式宣布到现在两个月,因为最近忙,出版到现在为止1.1版本号.稍后我们将始终坚持以良好DataUML Design软件,我希望程序员有很多支持. 一.1.1新的和改进的版 ...

  7. android的版本控制

    在一个团队项目中,项目的版本控制,一方面促进团队的协同能力,另一方面提高项目的进度 即使一个人的项目也最好使用SVN这样的版本控制,可以清楚的知道自己的修改的代码,和项目进度等.合理的托管,也让优秀的 ...

  8. DDD实践2

    DDD实践切入点(二) 承前:大型系统的支撑,应用系统开发思想的变迁,DDD实践切入点(一) 从大比例结构入手已经开始了系统的建设,大家都知道需求是会不断变化不断深入的,刚开始自然是模糊的大比例结构对 ...

  9. mac下Android apk 破解流程

    相关工具下载:http://pan.baidu.com/s/1kTkOicn 首先你要有eclipse工具,在sdk目录下有如下工具可以使用 android:adb shell:进入交互shell  ...

  10. Mvc的多层架构

    分享一个Mvc的多层架构,欢迎大家拍砖斧正   多层架构是什么? 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略,关于多层架构的标准,我认为有一句话是比较有代表 ...