复习笔记
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)