当前位置: 首页 > news >正文

建一个公司网站需要几天网站什么模板做的

建一个公司网站需要几天,网站什么模板做的,免费云主机服务器,wordpress管理后台添加导航栏目录 一、异常的概念和体系结构 1.1 异常的概念 1.2 异常的体系结构 1.3 异常的分类 二、异常的处理 2.1 防御式编程 2.2 异常抛出 2.3 异常捕获 2.4 异常处理流程 三、自定义异常类 一、异常的概念和体系结构 1.1 异常的概念 程序员在开发过程中#xff0c;想要将代码写得…目录 一、异常的概念和体系结构 1.1 异常的概念 1.2 异常的体系结构 1.3 异常的分类 二、异常的处理 2.1 防御式编程 2.2 异常抛出 2.3 异常捕获 2.4 异常处理流程 三、自定义异常类 一、异常的概念和体系结构 1.1 异常的概念 程序员在开发过程中想要将代码写得尽可能完美但在程序运行过程中会出现一些问题例如数据的格式不正确、网络不畅等。在Java中将程序执行过程中发生的不正常行为叫作异常例如写代码时遇到的 1. 算术异常 System.out.println(10/0); 2. 数组越界异常 int[] arr{1,2,3}; System.out.println(arr[5]); 3. 空指针异常 int[] arrnull; System.out.println(arr.length); Java中不同类型的异常都有对应的类进行描述。 1.2 异常的体系结构 异常的种类有很多为对不同类异常或错误进行更好的管理Java内部维护一个异常体系结构。 由图可知Throwable是异常体系最顶层的类有Error和Exception两个子类Error类异常是Java虚拟机无法解决的问题例如资源耗尽等一旦出现这类异常后面的程序就不再执行Exception类异常是程序员可以通过代码处理的使程序继续进行。 1.3 异常的分类 异常发生在编译期间或程序运行时根据发生的时机不同可以分为编译时异常和运行时异常。上图中只有Runtime Exception类是运行时异常。 1. 编译时异常 编译时异常是在程序编译期间发生的异常也叫受检查异常。 class Person{String name;public Person(String name){this.namename;}Overrideprotected Object clone() {return super.clone();} } 必须捕获或声明方法后声明异常来方便抛出异常最后后由JVM来处理。 2. 运行时异常 运行时异常时在程序运行期间发生的异常也叫非受检查异常。上述所说的数组越界异常和空指针异常都是运行时异常编译通过但运行出错。 注意编译时期出现的语法错误不属于异常。 二、异常的处理 2.1 防御式编程 防御式编程是程序出现问题及时通知程序员进行处理处理方式有两种事前防御型和事后认错型。 1. 事前防御型在操作之前就做检查。 boolean retfalse; ret 登陆游戏(); if(!ret){         //处理游戏错误         return; } ret开始匹配(); if(!ret){         //处理匹配错误         return; } ret游戏确认(); if(!ret){         //处理游戏确认错误         return; } ret选择英雄(); if(!ret){         //处理选择英雄错误         return; } …… 缺陷正常流程和错误处理流程写一块代码整体阅读性不高。 2. 事后认错型先操作遇到问题再处理。 try{                 登陆游戏();                 开始匹配();                 游戏确认();                 选择英雄();                 ……         }catch(登录游戏异常){                 //处理登录游戏异常;         }catch(开始匹配异常){                 //处理开始匹配异常;         }catch(游戏确认异常){                 //处理游戏确认异常;         }catch(选择英雄异常){                 //处理选择英雄异常;         }         …… 优点正常流程和错误流程的代码分开代码阅读性高容易理解代码异常处理的核心思想是事后认错型。 Java中异常处理主要的5个关键字throw、try、catch、final、throws。 2.2 异常抛出 在编写程序时如果程序中出现错误就需要将错误信息告诉给调用者。 在Java中。可以借助throw关键字抛出一个指定的异常对象将错误信息告诉给调用者 throw new  XXXException(异常产生原因); 示例访问数组任意位置元素的方法 public static int getEldment(int[] arr,int index){if(nullarr)throw new NullPointerException(传递的数组为空);if(index0||index arr.length)throw new ArrayIndexOutOfBoundsException(数组下标越界);return arr[index]; }public static void main(String[] args) {int[] arr{1,2,3};System.out.println(getEldment(arr,3)); }注意throw必须写在方法体内抛出的异常必须是Exception或Exception的子类对象如果是Runtime Exception或者Runtime Exception的子类则可以不用处理交给JVM处理如果抛出的是编译异常用户必须处理否则无法通过编译异常一旦抛出其后的代码就不会执行。 2.3 异常捕获 异常捕获是异常的具体处理方法主要有两种异常声明throws和try-catch捕获处理。 1. 异常声明 throws 在方法声明时参数列表之后当方法中抛出编译时异常用户不想处理可以借助throws将异常抛给方法的调用者来处理即当前方法不处理异常提醒方法的调用者处理异常。 语法格式 修饰符  返回值类型 方法名(参数列表) throws 异常类型1异常类型2...{ } 示例加载指定配置文件 File file; //FileNotFoundException:编译时异常表明文件不存在 //没有办法处理将错误信息报给调用者让调用者检查文件名是否错误 public void OpenFile(String Filename) throws FileNotFoundException{if(!Filename.equals(config.ini)){throw new FileNotFoundException(配置的文件名不对);} 注意throws必须跟在方法的参数列表之后声明的异常必须是Exception或Exception的子类方法内部如果抛出多个异常throws之后就必须跟多个异常如果抛出的多个异常则直接声明父类即可;调用声明抛出异常的方法时调用者必须对异常进行处理或者使用throws抛出。 public class Config {File file;/*public void OpenFile(String FileName) throws IOException,FileNotFoundExceptionFileNotFoundException 继承于IOException*/public void OpenFile(String FileName) throws IOException{if(FileName.endsWith(.ini)){throw new IOException(该文件不是.ini文件);}if(FileName.equals(config.ini)) {throw new FileNotFoundException(配置的文件名不对);}}public static void main(String[] args) {Config confignew Config();try {config.OpenFile(config.ini);} catch (IOException e) {e.printStackTrace();}} } 2. try-catch捕获并处理 throws对异常并没有真正处理而是将异常报告给抛出异常方法的调用者由调用者处理。如果真正要对异常进行处理就需要try-catch。         语法格式 try{         //可能出现异常的代码 }catch(捕获的异常类型 e){         //如果捕获到就处理异常完成后跳出try-catch结构继续执行后面代码 }[catch(异常类型 e){         //异常处理 }finally{         //此处代码一定执行 }] //后面代码 //当异常被捕获并处理后后面代码一定会执行如果捕获类型不对后面代码就不会执行 上面代码块中[]表示可选项可以添加也可以不添加try中代码可能会抛出异常也可能不会。 public static void main(String[] args) {System.out.println(异常前);/*catch可以捕获多个异常但同一时刻只能抛出一个异常*/try{System.out.println(10/0);}catch (ArithmeticException e){e.printStackTrace();//打印信息最全面System.out.println(成功捕获并处理ArithmeticException异常);//System.out.println(e.getMessage());//只打印异常信息//System.out.println(e);//打印异常类型异常信息}catch (NullPointerException e){e.printStackTrace();System.out.println(成功捕获并处理NullPointerException异常);}System.out.println(异常后); } 异常处理方式根据不同的场景来决定。对于比较严重的问题(例如和算钱相关的场景), 应该让程序直接崩溃, 防止造成更严重的后果对于不太严重的问题(大多数场景), 可以记录错误日志, 通过监控报警程序及时通知程序员对于可能会恢复的问题(和网络相关的场景), 可以尝试进行重试。在以上代码中采取的是经过简化的第二种方式. 我们记录的错误日志是出现异常的方法调用信息, 能很快速的让我们找到出现异常的位置。         注意try块内抛出异常位置后的代码不会被执行如果抛出异常类型与catch时异常类型不匹配即异常不会被成功捕获也就不会被处理继续往外抛直到JVM收到后结束程序----异常按照类型来捕获 public static void main(String[] args) {try{int[] arr{1,2,3};System.out.println(arr[3]);//抛出数组越界异常}catch (NullPointerException e){//捕获空指针异常其他类的异常无法被捕获e.printStackTrace();}System.out.println(异常处理后); } try中可能会抛出多个不同的异常对象则必须用多个catch来捕获----即多种异常多次捕获 public static void main(String[] args) {try{int[] arr{1,2,3};System.out.println(arr[3]);//抛出数组越界异常}catch (NullPointerException e){//捕获空指针异常其他类的异常无法被捕获System.out.println(空指针异常);e.printStackTrace();}catch (ArrayIndexOutOfBoundsException e){//数组越界异常System.out.println(数组越界异常);e.printStackTrace();}System.out.println(异常处理后); } 如果多个异常处理方式完全相同也可以以如下方式写 catch (NullPointerException|ArrayIndexOutOfBoundsException e){ } 如果异常间有父子关系一定是子类异常在前catch父类异常在后catch否则语法错误如下代码 public static void main(String[] args) {try{int[] arr{1,2,3};System.out.println(arr[5]);}catch (Exception e){e.printStackTrace();}catch (NullPointerException e){e.printStackTrace();} } //Exception java.lang.NullPointerException has already been caught 3. finally 写程序时有些特定的代码不论程序是否发生异常都需要执行比如程序中打开的资源网络连接、数据库连接等在程序正常或者异常退出时必须要对资源进行回收。另外因为异常会引发程序的跳转可能导致有些语句执行不到finally就是用来解决这个问题的。 语法格式 try{         //可能异常的代码 }catch(异常类型 e){         //处理异常 }finally{         //此处代码一定执行不论是否异常 } 示例 public static void main(String[] args) {try{int[] arr {1,2,3};arr[5] 10;arr[0] 10;}catch (ArrayIndexOutOfBoundsException e){System.out.println(处理异常);e.printStackTrace();}finally {System.out.println(finally中的代码一定会执行);}System.out.println(异常后); } finally 和 try-catch-finally 后的代码都会执行那为什么还要有finally呢         示例在一个方法中输入一个整数并返回在main中打印这个数 public static int getData(){Scanner sc null;try{sc new Scanner(System.in);int data sc.nextInt();return data;}catch (InputMismatchException e){e.printStackTrace();}finally {System.out.println(finally中代码);}System.out.println(try-catch-finally之后代码);if(null ! sc) {sc.close();}return 0; } public static void main(String[] args) {int dategetData();System.out.println(date); } 上述代码正常输入成功接收输入后程序就返回了try-catch-finally之后代码没有执行即输入流没有被释放造成资源泄漏。         注意finally中的代码一定会执行的一般在finally中进行一些资源清理的扫尾工作。 public static void main(String[] args) {System.out.println(func()); } public static int func() {try {return 5;} finally {return 10;} } finally 的执行是在方法返回之前(try 或者catch中若有return会在这个return之前执行finally)但若finally中也存在return 语句, 那么就会执行finally中的return, 而不会执行try中的 return。一般不建议在finally中写return。 2.4 异常处理流程 如果本方法中没有合适的处理异常的方式, 就会沿着调用栈向上传递。 public static void main(String[] args) {         try {                 func1();         } catch (ArrayIndexOutOfBoundsException e) {                 e.printStackTrace();         }         System.out.println(after try catch); } public static void func1() {         int[] arr {1, 2, 3};         System.out.println(arr[100]); } 异常处理流程程序先执行 try 中的代码如果 try 中代码异常, 就结束 try 中代码, 看与catch 中的异常类型是否匹配如果找到匹配的异常类型, 就会执行 catch 中的代码如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者无论是否找到匹配的异常类型, finally 中的代码都会被执行(在该方法结束前)如果上层调用者也没有处理的了异常, 就继续向上传递一直到 main 方法也没有合适的代码处理异常, 就会交给 JVM 来进行处理, 此时程序就会异常终止。 三、自定义异常类 Java中虽然已经内置丰富的异常类, 但不能完全表示实际开发所遇到的一些异常此时需要维护符合我们实际情况的异常结构。 例如实现一个用户登陆功能 public class LogIn {         //用户名         private String user_name admin;         //密码         private String user_password 123456;         //登录         public static void loginInfo(String userName, String password) {                 if (!userName.equals(userName)) {                 } if(!password.equals(password)) {                 }                 System.out.println(登陆成功);         }         public static void main(String[] args) {                 loginInfo(admin, 123456);         } } 在处理用户名密码错误时可能需要抛出两种异常我们可以基于已有的异常类进行扩展(继承), 创建和业务相关的异常类。 自定义异常类然后继承自Exception 或者 RunTimeException实现一个带有String类型参数的构造方法参数含义出现异常的原因。 public class UserNameException extends Exception{public UserNameException(String massage){super(massage);} } public class UserPasswordException extends Exception{public UserPasswordException(String massage){super(massage);} } public class Login {//用户名private String user_nameadmin;//密码private String user_password123456;//登录public static void User_login(String user_name,String user_password) throws UserNameException,UserPasswordException{if(!user_name.equals(user_name)){throw new UserNameException(用户名错误);}if(!user_password.equals(user_password)){throw new UserPasswordException(用户密码错误);}System.out.println(登录成功);}public static void main(String[] args) throws UserPasswordException,UserNameException {try{User_login(admin,123456);}catch (UserNameException e){e.getStackTrace();}catch (UserPasswordException e){e.getStackTrace();}} }注意自定义异常通常会继承自 Exception 或者 RuntimeException继承自 Exception 的异常默认是受查异常继承自 RuntimeException 的异常默认是非受查异常。
http://www.pierceye.com/news/95792/

相关文章:

  • 南宁网站开发推广网站html模板下载
  • 网络编辑的网站建设题二手域名交易平台
  • 定制网站开发商业计划书贵南县网站建设公司
  • 如何免费发布个人网站网站项目需求分析
  • 太原免费网站建设网站开发合作协议书
  • 深圳龙华做网站上海响应式网站制作公司
  • 招投标 网站建设专业型网站和个人网站
  • 网站建设需要那些基础增城线上教学
  • 专注移动网站建设免费咨询电脑维修
  • 六里桥做网站公司惠州做网站 百度优化
  • 做网站怎么选择上市公司wordpress 进销存
  • 做视频网站用哪个模板昆明贤邦网站建设
  • 自建网站工具wordpress仿内涵段子
  • 做推广最好的网站是哪个菜鸟网站建设
  • 首钢建设公司网站微信网站怎么做的好处
  • 西安网站开发费用网站即将 模板
  • 个人做商业网站需要什么热门网站建设代理
  • 企业网站手机端和pc端一个后台吗企业网站管理系统的运维服务
  • 北京官网开发优化游戏性能的软件
  • 网站开发选asp还是hph集约化网站群建设情况
  • 做网站域名重要吗10000ip网站怎么做
  • 途牛的旅游网站是谁做的wordpress 注册用户列表
  • 如何编辑网站新吁网站建设
  • 网站开发采集工具免费引流在线推广
  • 全面的锦州网站建设西安建筑工程有限公司
  • 做网站 郑州公司哪家好哪个购物网站最便宜
  • dedecms网站后台免费网页小游戏
  • 如何查网站外链wordpress火车头采集免费版
  • 四川住房建设和城乡建设厅新网站wordpress 采集 api
  • 企业所得税怎么交南昌seo实用技巧