1,异常是导致程序bug最直接的原因,异常处理可以让程序员决定,出错时以(蓝屏,代码,报错,提示等)处理.
2,异常级别
初级:语法错误:编译不通过
中级:运行错误,调式来解决
高级:逻辑错误,需要经验,难以排查.
举例c#数组越界
class Program{static void Main(string[] args){int[] arr = new int[1];try{Console.WriteLine(arr[1]);}catch (Exception e){Console.WriteLine(e);}finally{Console.WriteLine("我是必须执行的。");}/*语法:try{//可能运行报错的代码}catch (IndexOutOfRangeException e){Console.WriteLine(e);}catch (Exception e){Console.WriteLine(e);}finally {}异常就是收集错误信息的。然后哪里错了, 哪里值得我猿去解决, 发布新版本。但是代码越多, 越容易错。可以有多个catch块, catch 后面的括号必须是 运行时出错的类 + 类名catch (IndexOutOfRangeException e)而 catch (Exception e) 表示所有的异常, 检查不出来了就用。必须放在最后。finally是必须执行的。一定要有try和catch搭配 或者 try和finally搭配 或者 try catch finally与java的区别:java catch后面括号是必须带的, 是哪里错了。.net 则可以不要。*/}}
还有 Error , Wrong , Unstable
处理的其它方式
1 throw;
抛出错误 ,数组越界,一段英文
2 提示一段话
Console.WriteLine(“程序出错,电脑有毒!”);
3 记录错误日志,收集信息发送数据库再修改(代码以后更新)
4 甩锅
Console.WriteLine(“程序出错,360的影响”);
Java中的异常除了try catch finally 还有自定义异常。如下:
在这里插入代码片
```public class testThrow {public static void main(String[] args) {stu s = new stu();try {s.setAge(-10);} catch(myException e) {//e.printStackTrace();System.out.println(e);}s.show();//s.setAge(-10); runException 可以直接这样写。}}class stu {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}//这个年龄会抛出自定义年龄的错误。public void setAge(int age) throws myException {if (age >= 0 && age <= 150) {this.age = age;} else {throw new myException("出错了");} }private int age;//运行时抛出, 可以不用trypublic void show() throws runException {throw new runException("运行时错误,可不try");}}@SuppressWarnings("serial")
class myException extends Exception {public myException(String msg) {super(msg);}
}@SuppressWarnings("serial")
class runException extends RuntimeException {public runException(String msg) {super(msg);}
}/*以上是自定义异常* 一个异常类继承一个Java里面的异常类。* myException and runException * 注意* 方法抛出的异常要大于等于方法体抛出的异常。* 继承时,子类重写方法抛出的异常必须小于等于父类的异常。* */