java构造函数可以抛出异常吗_关于java:使构造函数抛出异常是一种好习惯吗?...
本问题已经有最佳答案,请猛点这里访问。
让构造函数抛出异常是一个好的实践吗?例如,我有一个类Person,我将age作为它的唯一属性。现在我提供的课程是
class Person{
int age;
Person(int age) throws Exception{
if (age<0)
throw new Exception("invalid age");
this.age = age;
}
public void setAge(int age) throws Exception{
if (age<0)
throw new Exception("invalid age");
this.age = age;
}
}
我觉得不错,但你的代码复制是不好的做法。只需从构造函数调用setage来减少大量重复的代码
在这种情况下抛出IllegalArgumentException可能是个好主意,这使得它非常明确。
@codemwnci:如果setAge是虚拟的(这里的情况也是这样),这不是一个好主意。
@你能解释一下吗?为什么虚拟方法不应该在构造函数内部调用?
@未知:这里有解释。
在构造函数中抛出异常并不是一个糟糕的实践。事实上,对于一个构造函数来说,这是表示存在问题的唯一合理的方法;例如,参数无效。
然而,明确声明或抛出java.lang.Exception几乎总是不好的做法。
java构造函数可以抛出异常吗_关于java:使构造函数抛出异常是一种好习惯吗?...相关推荐
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- java jsp取静态常量_获取java静态
Android NDK开发系列教程4:对类变量进行操作 终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 通常我们 ...
- java字符串拆分成数组_用Java实现JVM第八章《数组和字符串》
小傅哥 | https://bugstack.cn 沉淀.分享.成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获.目前已完成的专题有:Netty4.x实战专题案例.用J ...
- java教务系统类设计_基于Java EE体系的高校教务管理系统的设计开发
<基于Java EE体系的高校教务管理系统的设计开发>由会员分享,可在线阅读,更多相关<基于Java EE体系的高校教务管理系统的设计开发(3页珍藏版)>请在人人文库网上搜索. ...
- java 取栈顶元素_《Java实战之内存模型》详解篇
内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行 JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的高效稳定运行 不同的JV ...
- java中属性外部化_用Java可外部化
java中属性外部化 在理解Externalizable接口之前,您需要了解序列化.您可以在java中的序列化上阅读有关序列化的更多信息. Java提供了一种称为序列化的机制,以按字节的有序或字节序列 ...
- 为啥JAVA虚拟机不开发系统_理解Java虚拟机体系结构
1 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么.正是得益于Jav ...
- java se好用吗_利用 Java SE 7 更好地管理资源
2011 年 5 月发布 作者:Julien Ponge 本文介绍 Java 7 针对自动资源管理问题给出的解决办法,即 Coin 项目中提出的新语言结构 try-with-resources 语句. ...
- java数据库表不存在_如果Java生产代码中不存在并在JUnit中确认,则创建数据库表...
Code-Apprentice 2 java sql junit jdbc 我正在用Java编写数据库程序,并且想要创建一个表(如果它还不存在).我从中了解DatabaseMetaData.getTa ...
- java原生的编译软件_原生态Java 程序员容易忽视的编程细节
Java是Java程序设计语言和Java平台的总称,要想学好一门语言,打好基础最关键的,学习一种新的编程语言比学习新的口头语言要容易得多.然而,在这两种学习过程中,都要付出额外的努力去学习不带口音地说 ...
最新文章
- 进程控制概念简介 多线程上篇(三)
- Sencha应用程序的UI测试
- 阿里云服务器Linux配置数据库、jre、tomcat、部署javaweb
- Python 字符串操作
- 计算机应用基础2004年,计算机应用基础2004年下半年全国试题参考答案2
- android 应用程序 判断 ,如何判断Android应用程序是否正在前台运行?
- 23种设计模式----------建造者模式
- c#12星座速配代码_白羊座今日运势|2020/12/11
- 流媒体服务器性能测试
- 【岗位详情】腾讯广告机制策略算法工程师(北京)
- IOI2019团体总分前十排名:美国队夺魁,中国队第三,亚洲占六席
- C#语言入门详解(刘铁锰)---泛型
- 第十三首歌曲《翱翔的骄鹰》
- 轮播图和导航栏:Vue和JavaScript分别实现
- element plus之el-table行融合+列融合+小计行+自定义控件+样式自定义方案
- 程序员如何读懂火焰图
- 三相变频电源整流有什么特征?
- 【Serverless】云函数微信小程序
- ctab法提取dna流程图_CTAB法提取DNA原理及步骤、制胶、电泳
- Niushop分销系统佣金算法设计思路