1)使用tey_cath_finally处理异常? 判断输入的是否为整数:扫描仪对象 . hasNextInt() 1-1)异常机制: 异常是一种特殊的对象,类为java.lang.Exception或其子类
异常处理快捷键:Alt+Shift+Z,选择try/catch Block
Exception 变量名 AS ex:最高级异常处理, ex . getMessage()获得异常信息*****ex . printStackTrace()获得异常的内存堆栈信息及错误的位置 1-2)什么是异常: 异常是指在程序中的运行过程中所发生的不正常的事件,它会中断正在运行的程序
1-3)什么是异常处理: java编程语言使用异常处理机制为程序提供了错误处理的能力
1-4)java中如何进行异常处理? Java的异常处理是通过5个关键字来实现的:
try : 执行可能产生异常的代码
catch : 捕获异常
finally : 无论是否发生异常,代码都会执行
throws :声明方法可能要抛出的各种异常
throw:手动抛出异常 try{ //可能发生异常的语句
}catch{
//捕获异常
}finally{ //都会执行
}
注意:当程序遇到System.exit(1)的时候不走finally 如果发生异常,但并没有捕获到异常,则终止程序,剩余代码将不执行

2)存在return的try-catch-finally块:存在以下几种情况:  第一种存在return方式:package Text;
public class Return {
public static void main(String[] args) {
Text();
}
public static void Text()
{
int a=2;
try
{
a++;//此处设置断点,第一步执行
return;//第三步执行
}
finally
{
++a;//第二布执行
}
}
}
分析:首先 在a++;位置设置了断点,第一步执行a++; 而第二步并没有执行 return;而是先进入了 finally块。执行完毕后 再返回上去 执行return。 finally块以后不能写代码
第二种存在return方式:package Text;
public class Return {
public static void main(String[] args) {
Text();
}
public static void Text()
{
int a=2;
try
{
a++;//此处设置断点,第一步执行
return;//第三步执行
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
++a;//第二布执行
}
System.out.println("aa");
}
}
解析:我们在上述代码中添加了,catch块。执行顺序和上者一致。可以在finally块后写代码,但是不执行。执行 return的时候 结束了方法。 第三中存在return方式:package Text;
public class Return {
public static void main(String[] args) {
Text();
}
public static void Text()
{
int a=2;
try
{
a++;
throw new Exception("我是测试");
}
catch(Exception e)
{
System.out.println(e.getMessage());
return;
}
finally
{
++a;//第二布执行
}
//System.out.println("aa");
}
}
解析:我们在try里面手动添加了异常,并把return语句放在了catch块里面。执行顺序也是和上着一致。 先不走return,执行完finally块以后 再返回执行return语句。 此时finally块以后不允许写代码块 第四种存在return方式:package Text;
public class Return {
public static void main(String[] args) {
System.out.println(Text());
}
public static int Text()
{
int a=2;
try
{
a++; //1
throw new Exception("我是测试"); //2
}
catch(Exception e)
{
System.out.println(e.getMessage());//3
return a;//4 //6
}
finally
{
++a;//5
}
//System.out.println("aa");
}
}
结果:3
解析:我们把Text方法 改成了有返回值的方法。那么现在执行顺序是否改变了那。 执行顺序如下:同样a++;设置断点调式。先执行//1 在执行//3 在执行//4 在执行//5 在执行//6
结论:如果是有返回值的,就会先执行一遍return 并把当前的值返回给方法。在执行++a的时候,a的值受 影响,但是返回值不会受影响。 第五种存在return方式:package Text;
public class Return {
public static void main(String[] args) {
System.out.println(Text());//7
}
public static int Text()
{
int a=2;
try
{
a++;//1
throw new Exception("我是测试"); //2
}
catch(Exception e)
{
System.out.println(e.getMessage());//3
return a;//4
}
finally
{
++a;//第二布执行//5
return a;//6
}
//System.out.println("aa");
}
}
解析:我们也在finally块中添加了 return语句。那么执行顺序又有什么变化那。 第一步执行//1 第二步//2 第三步进入catch块执行//3 第四步//4 第五步进入finally块执行//5 第六步//6 第七步main方法//7
显然走完finally快后,并没有再去执行 catch块中的return语句。就直接结束了当前方法。 finally块中的return会影响 cathc块中return返回的值。
注意:一般finally块中不会写return语句
多种catch块: 
常见的异常类型: 
日常日志: throws,声明异常,抛给调用者处理,调用者必须进行try..catch
位置:方法名后面进行声明异常,多个异常使用逗号隔开

调用者必须处理:

调用者不处理,抛给了java的虚拟机处理

手动抛出异常? 使用throw抛出异常
throw new Exception



开源日志记录工具log4j 日志及分类:

使用log4j记录日志步骤:
1.在项目中加入log4j的JAR文件
2.创建log4j.properties文件
3.配置日志信息 

4.使用log4j记录日志信息
|