zoukankan      html  css  js  c++  java
  • Java中关键字throw和throws的区别

    ==========================================题外话=====================================================


    今天是2016年11月26日,实习到现在已经两个多月了,这两天忽然意识到了很重要的一个问题:在实习过程中,自己不能合理的安排时间,导致自己的实习生活很累,甚至有点消极的情绪

    今天周六,依然一如既往自己到公司来学习,正好有时间可以写一写自己的感悟:对于实习生来说,我个人的感觉是这样,刚走出大学,进入公司,有些观念和思维方式以及一些学习的习惯需要时间来调整,在这里,我觉得我最重要的一点,就是时间的合理规划------如果不及时自己调整,意识到问题的存在,就会让自己陷入一个比较茫然的圈子------找不到自己的定位以及生活的规律,学习的效率也会大打折扣,甚至于说成了一个敲代码的机器,不能消化所学的知识而且会让自己特别特别累。在前期可能没什么感觉,但是时间久了,这些现象就会渐渐的显现。因此,对于一个追求更大发展和更快成长的应届毕业生(只是想在公司打打酱油,过稳定日子的可以把这些话当小说看看),当你觉得自己的生活很累,有点过分的吃不消的时候,这个时候,应该及时的反思自己的生活状态,是不是已经偏离了自己的掌控,给自己一点自己的时间,及时发现问题,及时地去调整,找到自己的定位,把自己拉回到高效学习的轨道,合理规划时间让自己的职业生活尽快步入正轨。

    ====================================================================================================


    抛出异常有三种形式,一是throw,一个throws,还有一种系统自动抛异常。下面它们之间的异同。


    一、系统自动抛异常

    当程序语句出现一些逻辑错误、主义错误或类型转换错误时,系统会自动抛出异常:(举个栗子)

    1. public static void main(String[] args) {
    2. int a = 5, b =0;
    3. System.out.println(5/b);
    4. //function();
    5. }
    系统会自动抛出ArithmeticException异常

    或者

    1. public static void main(String[] args) {
    2. String s = "abc";
    3. System.out.println(Double.parseDouble(s));
    4. //function();
    5. }

    系统会自动抛出NumberFormatException异常。


    二、throw

    throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常

    1. public static void main(String[] args) {
    2. String s = "abc";
    3. if(s.equals("abc")) {
    4. throw new NumberFormatException();
    5. } else {
    6. System.out.println(s);
    7. }
    8. //function();
    9. }
    运行时,系统会抛出异常:

    Exception in thread "main" java.lang.NumberFormatException at......


    三、throws

    throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)

    public void function() throws Exception{......}

    当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给上层调用它的方法程序处理

    1. public class testThrows(){
    2. public static void function() throws NumberFormatException{
    3. String s = "abc";
    4. System.out.println(Double.parseDouble(s));
    5. }
    6. public static void main(String[] args) {
    7. try {
    8. function();
    9. } catch (NumberFormatException e) {
    10. System.err.println("非数据类型不能强制类型转换。");
    11. //e.printStackTrace();
    12. }
    13. }

    运行结果:

    非数据类型不能强制类型转换。


    throw与throws的比较
    1、throws出现在方法函数头;而throw出现在函数体。
    2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
    3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。


    编程习惯:
    1.在写程序时,对可能会出现异常的部分通常要用try{...}catch{...}去捕捉它并对它进行处理;
    2.用try{...}catch{...}捕捉了异常之后一定要对在catch{...}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
    3.如果是捕捉IO输入输出流中的异常,一定要在try{...}catch{...}后加finally{...}把输入输出流关闭;
    4.如果在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,然后交给调用它的上层函数进行处理。

  • 相关阅读:
    打开安装 好的Microsoft Dynamics CRM 4.0 报错误为 Caller does not have enough privilege to set CallerOriginToken to the specified value 的解决办法
    基于 Windows Server 2008 的计算机对 Microsoft Dynamics CRM 4.0 的支持
    Microsoft Dynamics CRM 4.0 如何添加自定义按钮
    Microsoft Dynamics CRM 4.0 Plugin 取值,赋值,查询
    C# 中的 enum(枚举) 类型使用例子
    vue事件的绑定
    表单验证2
    node中模块
    node模块的引入
    node中的读文件
  • 原文地址:https://www.cnblogs.com/jpfss/p/9447574.html
Copyright © 2011-2022 走看看