一:throws 和 trycatch 差别

(1)比如。publicFileWriter(String fileName) throws IOException{}



我在mian中创建一个FileWrite对象

importjava.io.*;

publicclass ShengmingThrows {

     public static void main(String[] args){

         try{

         FileWriter fw=new FileWriter("k.txt");

         } catch(FileNotFoundException ex){}

    }

}

(2) 还有一种处理方法:

importjava.io.*;

publicclass ShengmingThrows {

     public static void main(String[] args)throws IOException{

        //try{

         FileWriter fw=new FileWriter("k.txt");

       // }

       // catch(IOException e){}

    }

}

请解释一下两种操作的不同之处。throws仅仅是声明异常,异常并没有处理throws仅仅是对该类声明会抛出一个异常,但没有对异常进行捕获,让别的调用它的方法进行处理。

或者继续抛出,抛给上一层函数或类的成员函数。。

try catch是对可能出现异常的代码捕获异常并对其进行处理

throws仅仅是声明异常,异常并没有处理

当然。try和catch也不是非要处理啊。

像代码,

try{

        FileWriter fw=new FileWriter("k.txt");

        }

        catch(IOException e){}   //catch里也是空的,它也没有处理啊

二:抛出什么异常。如捕获多个异常

(1)完整代码例如以下

File file = new File("d:\\a.txt");// 这个不是read的不会抛异常的,仅仅有。有可能抛出对应的异常,才写catch的,否则多余的catch eclipse也会报错的
BufferedReader bf = new BufferedReader(new FileReader(file));//有可能抛异常
catch(ParseException ex){// Date d1 = df.parse(tmp_date + t1);是因为parse函数抛出的异常,所以编程中能够依据函数的提示来书写异常
ex.printStackTrace();
System.out.println("数据解析异常:" + ex);
// log.warn("****" + ex);
}
public static void main(String[] args){
DateFormat df = new SimpleDateFormat("yy-MM-dd HH:mm:ss"); String t1 = "07:30:45";
String t2 = "08:32:46";
String tmp_date = "2014-04-01 ";
try{
File file = new File("d:\\a.txt");// 这个不是read的不会抛异常的。仅仅有,有可能抛出对应的异常,才写catch的。否则多余的catch eclipse也会报错的
BufferedReader bf = new BufferedReader(new FileReader(file));
Date d1 = df.parse(tmp_date + t1);
Date d2 = df.parse(tmp_date + t2);
//System.out.println("******" + d1.compareTo(d2));
System.out.println(d1.getTime());
System.out.println(d2.getTime());
long diff = d2.getTime()-d1.getTime();
long hour = diff/(1000*60*60);
diff = diff%(1000*60*60);
long minute = diff/(1000*60);
diff = diff%(1000*60);
long second = diff/1000; System.out.println("hour=" + hour + ", minute=" + minute + ", second=" + second);//2685000 }catch(ParseException ex){// Date d1 = df.parse(tmp_date + t1)是因为parse函数抛出的异常,所以编程中能够依据函数的提示来书写异常
ex.printStackTrace();
System.out.println("数据解析异常:" + ex);
// log.warn("****" + ex);
}catch(NullPointerException ex){
ex.printStackTrace();
System.out.println("空指针异常:" + ex);
// log.warn("****" + ex);
}catch(IndexOutOfBoundsException ex){
ex.printStackTrace();
System.out.println("数组越界异常:" + ex);
// log.warn("****" + ex);
}catch(RuntimeException ex){
ex.printStackTrace();
System.out.println("执行时异常,NullPointerException IndexOutOfBoundsException 都是其子类" + ex);
// log.warn("****" + ex);
}
catch(FileNotFoundException ex){
ex.printStackTrace();
System.out.println("文件找不到异常:" + ex);
// log.warn("****" + ex);
}catch(IOException ex){
ex.printStackTrace();
System.out.println("IO读取异常,是FileNotFoundException的父类" + ex);
// log.warn("****" + ex);
}catch(Exception ex){
ex.printStackTrace();
System.out.println("异常,上面各种异常的父类" + ex);
// log.warn("****" + ex);
}
} }

(2)总之,由于Exception这个是那几个异常的 父类或者基类。那几个异常都是他的子类,Exception放在最前面后面就没有机会了。其把全部的异常都捕获了。

三:初遇Dead Code

(1) Dead Code引起的原因

常常使用MyEclipse或Eclipse编辑器编写java代码的程序猿,可能常常遇到一个黄线警告提示:dead
code;一般程序猿遇到这些问题都会置之不理,反正也不影响程序的

编译运行。对,这不是bug,仅仅是一个提示,对于一个有强迫症的程序猿来说,他非要代码一点问题都没有,包含黄线警告都要消灭掉。这里简单说下dead
code 即死代

码、无作用的代码提示的原因和解决方法。

顾名思义,死代码,即你编写的那一行是无效代码,可有可无,说白了就是一行废话。这是你就要看一下这一行的处理逻辑是什么。可能是多余推断或者其它多余代码;比

如例如以下情况:

(2)情况一:无用的条件推断。就是你推断的这个条件永远为真

if (true& true) {

System.out.println("execute ok");

} else {

System.out.println("executefail");

}

从else開始即为无作用。由于true&true在编绎时即知结果,所以else部分是没用的。编译器知道肯定不会运行的代码。

换成:

boolean a =true;

boolean b = true;

if (a & b) {

System.out.println("execute ok");

} else {

System.out.println("executefail");

}

则不会出现该问题。由于在编译时编译器不确定a & b是否恒成立。

(2)情况二:多余的推断,就是你推断的这个对象永远不为空;事实上类似于情况一

TimeLineEventModel dataModel = new TimeLineEventModel();

if(dataModel !=null){

运行一些操作....

}

这里的推断也是多余,由于你已经new了这个对象,那这个对象就不会为空。你刚刚new的对象。怎么会为空呢?

未完待续,可能还有其它一些情况的死代码。等到时候编码遇见了再进行补充吧!

眼下来看。deadcode提示一般出如今if或其它推断的条件上。

java 异常 之 实战篇(trows 和 try catch Dead Code)的更多相关文章

  1. Java 异常的处理方式--throws和try catch

    异常的第一种处理方式throws. 看以下例子: import java.io.*;public class ExceptionTest04{ public static void main(Stri ...

  2. java异常——五个关键字(try、catch、finally、throw、throws)

    一.try.catch.finally常用组合 try{ xxx }catch(xxxException e){ e.printStackTrace(); } try{ xxx }catch(xxxE ...

  3. Java异常题库

    一.填空题 __异常处理__机制是一种非常有用的辅助性程序设计方法.采用这种方法可以使得在程序设计时将程序的正常流程与错误处理分开,有利于代码的编写和维护. 在Java异常处理中可以使用多个catch ...

  4. java并发系列 - 第28天:实战篇,微服务日志的伤痛,一并帮你解决掉

    这是java高并发系列第28篇文章. 环境:jdk1.8. 本文内容 日志有什么用? 日志存在的痛点? 构建日志系统 日志有什么用? 系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复 ...

  5. 《Java多线程编程实战指南(核心篇)》阅读笔记

    <Java多线程编程实战指南(核心篇)>阅读笔记 */--> <Java多线程编程实战指南(核心篇)>阅读笔记 Table of Contents 1. 线程概念 1.1 ...

  6. “全栈2019”22篇Java异常学习资料及总结

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"22篇Ja ...

  7. Java多线程编程实战指南(核心篇)读书笔记(五)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76730459冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  8. Java多线程编程实战指南(核心篇)读书笔记(四)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76690961冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  9. Java多线程编程实战指南(核心篇)读书笔记(三)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76686044冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

随机推荐

  1. [转载]cin、cin.get()、cin.getline()、getline()、gets()函数的用法

    1.cin>>           用法1:最基本,也是最常用的用法,输入一个数字: #include <iostream>using namespace std;main ( ...

  2. Hibernate_13_QBC查询

    Employee类.Department类.SessionFactoryTools类.Employee.hbm.xml文件.Department.hbm.xml文件.Hibernate.cfg.xml ...

  3. C++ Primer 学习笔记_75_模板与泛型编程 --模板定义

    模板与泛型编程 --模板定义 引言: 所谓泛型程序就是以独立于不论什么特定类型的方式编写代码.使用泛型程序时,我们须要提供详细程序实例所操作的类型或值. 模板是泛型编程的基础.使用模板时能够无须了解模 ...

  4. hadoop高速扫盲帖,从零了解hadoop

    1.MapReduce理论简单介绍 1.1 MapReduce编程模型 MapReduce採用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完毕 ...

  5. leetcode第一刷_Construct Binary Tree from Inorder and Postorder Traversal

    这道题是为数不多的感觉在读本科的时候见过的问题. 人工构造的过程是如何呢.兴许遍历最后一个节点一定是整棵树的根节点.从中序遍历中查找到这个元素,就能够把树分为两颗子树,这个元素左側的递归构造左子树,右 ...

  6. String、StringBuffer、StringBuilder之间区别

    String,StringBuffer,StringBuilder 之间区别 在字符串处理中C#提供了String.StringBuffer.StringBuilder三个类.那么他们到底有什么优缺点 ...

  7. POJ 1458 Common Subsequence(LCS最长公共子序列)

    POJ 1458 Common Subsequence(LCS最长公共子序列)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?c ...

  8. BZOJ 2190 仪仗队

           这道题的关键就是找到所有的点中,x与y互质的点,第一反应必定是暴搜,稍想一下可以从中分开求一半,但范围仍然限定了这条路行不通,仔细画了几张图后发现下图中从第三行起第k行可连fai k个, ...

  9. Jmeter 发送json{Jfinal 接口req rsp均为json}

    链接地址:http://yangyoupeng-cn-fujitsu-com.iteye.com/blog/2013649 使用jmeter发送json数据.方法有三种 原创,转载请注明出处 1.利用 ...

  10. Centos6 安全防护设置指南

    参考博文: Centos 6.4安全防护设置指南 4.使用chattr命令给下列文件加上不可更改的属性 有效防止非法用户进行文件的修改. [root@localhost ~]# chattr +i / ...