java:Java入门第三季第五课:抛出错误

复习笔记
Java入门第三季第五课:抛出错误
1.定义math类
①建立一个math类,定义一个静态方法Add,
②定义的方法是parseInt,将两个字符的整数相加
2.调用
①New一个Class TestIt,这里发现一个问题,静态方法可以直接调用,不用实例化
注意:如果把Math里面的Add方法改成非static的,那么Math.Add将会出现如下错误:
Cannot make a static reference to the non-static method Add(String, String) from the type Math
在静态方法中无法调用非静态方法
接下来我在main中实例化了Math,再调用的话就可以了.
Math mth=new Math();
mth.Add(“100”, “101”);

②里面的参数换成”a”就会出错,
③接下来在math里面用用try catch来返回-1,返回错误.

3.抛出错误
①再在math里定义一个公共的静态方法test,
使用方法Class.forName,
出现错误,但是这个错误可以直接扔出来给main.

②在try catch后面加上finally打印”finally”

③在主函数中调用结果math.test()
可以看到,首先执行的是finally,其次执行的是catch里面的东西,最后是test抛出来给main的错误,而main抛

出给虚拟机,错误的名称是”java.lang.ClassNotFoundException”
建立一个类Type

package javastudy;


public class Math 
{
    public static int Add(String a,String b)
    {
        int sum=Integer.parseInt(a);
        sum+=Integer.parseInt(b);
        return sum;
    }
}
package javastudy;

public class TestIt 
{

    public static void main(String[] args) 
    {
        System.out.println(Math.Add("100", "101"));
    }

}

没有问题

package javastudy;

public class TestIt 
{

    public static void main(String[] args) 
    {
        System.out.println(Math.Add("100", "a"));
    }
}

就出错了

package javastudy;


public class Math 
{
    public static int Add(String a,String b)
    {


        try 
        {
            int sum=Integer.parseInt(a);
            sum+=Integer.parseInt(b);
            return sum;
        } catch (Exception e) 
        {
            return -1;
        }
    }
} 

没有错误了,返回了-1

package javastudy;


public class Math 
{
    public static int Add(String a,String b)
    {


        try 
        {
            int sum=Integer.parseInt(a);
            sum+=Integer.parseInt(b);
            return sum;
        } catch (Exception e) 
        {
            return -1;
        }
    }

    public static void test()
    {
        Class.forName("aaa");

    }
}

错误:Unhandled exception type ClassNotFoundException

public static void test() throws ClassNotFoundException
    {
        Class.forName("aaa");

    }

可以直接扔出错误

public static void main(String[] args) throws ClassNotFoundException 
    {
        Math.test();
    }

在main调用,在主函数中仍然扔出
*at javastudy.Math.test(Math.java:23)
at javastudy.TestIt.main(TestIt.java:8)*

最终可以在最终要处理的地方处理错误

try 
        {
            int sum=Integer.parseInt(a);
            sum+=Integer.parseInt(b);
            return sum;
        } catch (Exception e) 
        {
            return -1;
        }
        finally
        {
            //不管是否出错,都会执行到这里
            System.out.println("finally");
        }

可以在try catch里加finally

public static void main(String[] args) throws ClassNotFoundException 
    {
        System.out.println(Math.Add("100a", "101"));


        Math.test();

主函数中调用,调用结果为

finally
-1
Exception in thread "main" java.lang.ClassNotFoundException: aaa
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at javastudy.Math.test(Math.java:28)
    at javastudy.TestIt.main(TestIt.java:11)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值