@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. 2.4 LINQ中使用where子句指定筛选条件

    本篇讲解的内容有: 使用where筛选过滤LINQ查询 带逻辑的where筛选 多个where筛选子句 [1.使用where筛选过滤LINQ查询] 通常一个LINQ查询不会如前面的示例代码这么简单,经 ...

  2. Linux下访问文件的基本模式

    源址:http://blogread.cn/it/article/6523?f=wb 访问文件的操作主要是指读文件和写文件,下文简单说明内核中几种常见的访问文件的方式. 普通模式 读写系统调用的默认方 ...

  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. Twitter Bootstrap JavaScript插件

    Twitter Bootstrap JavaScript插件本文收集了10款非常不错的JavaScript Twitter bootstrap扩展插件,利用Boostrap开发者可以节省大量的时间修复 ...

  5. 读书笔记—CLR via C#章节11-13

    前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可 ...

  6. JavaScript实例技巧精选(12)—计算星座与属相

    >>点击这里下载完整html源码<< 这是截图: 核心代码如下: <SCRIPT LANGUAGE="JavaScript"> <!-- ...

  7. iOS基础 - UIDatePicker and UIPickerView and UITextField

    1.UIDatePicker继承自UIControl,因此不会通过代理来监听事件的改变,而是通过addTarget来监听事件.监听的事件是值改变事件. 2.UIPickerView继承自UIView, ...

  8. WPF开发的FTP文件上传工具

    前言 最近楼主在改版的项目里有使用到FTP上传文件,所以看到之前的项目里FTP上传的功能,然后抽个时间学习一番,做着做着就作出了这个工具了(虽然有些验证的功能没加上),但是基本的上传功能还是很好用的, ...

  9. ASP.NET Session丢失问题原因及解决方案

    正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的. ASP.NE ...

  10. poj3984迷宫问题

    一个5 × 5的二维数组,表示一个迷宫.其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线. 很简单的一道题,迷宫问题,一般都选择两种优先搜索 ...