java 受检异常举例_JAVA受检异常和非受检异常举例

受检异常和非受检异常(运行时异常)举例

RuntimeException(即非受检异常):

RuntimeException在默认情况下会得到自动处理,所以通常用不着捕获RuntimeException。RuntimeException是那些可能在Java虚拟机正常运行期间抛出的异常的超类,可能在执行方法期间抛出但未被捕获的RuntimeException的任何子类都无需在throws子句中进行声明。

java.lang.ArithmeticException

java.lang.ArrayStoreExcetpion

java.lang.ClassCastException

java.lang.EnumConstantNotPresentException

java.lang.IllegalArgumentException

java.lang.IllegalThreadStateException

java.lang.NumberFormatException

java.lang.IllegalMonitorStateException

java.lang.IllegalStateException

java.lang.IndexOutOfBoundsException

java.lang.ArrayIndexOutOfBoundsException

java.lang.StringIndexOutOfBoundsException

java.lang.NegativeArraySizeException

java.lang.NullPointerException

java.lang.SecurityException

java.lang.TypeNotPresentException

java.lang.UnsupprotedOperationException

受检异常:

除了RuntimeException以外的异常,都属于CheckedException,它们都在java.lang库内部定义。Java编译器要求程序必须捕获或声明抛出这种异常。一个方法必须通过throws语句在方法的声明部分说明它可能抛出但并未捕获的所有CheckedException。

java.lang.ClassNotFoundException

java.io.FileNotFoundException

java.io.IOException

java.sql.SQLException

java.net.SocketException

java.lang.CloneNotSupportedException

java.lang.IllegalAccessException

java.lang.InterruptedException

java.lang.NoSuchFieldException

java.lang.NoSuchMetodException

(附)Java API中Exception的直接已知子类:

AclNotFoundException

ActivationException

AlreadyBoundException

ApplicationException

AWTException

BackingStoreException

BadAttributeValueExpException

BadBinaryOpValueExpException

BadLocationException

BadStringOperationException

BrokenBarrierException

CertificateException

ClassNotFoundException

CloneNotSupportedException

DataFormatException

DatatypeConfigurationException

DestroyFailedException

ExecutionException

ExpandVetoException

FontFormatException

GeneralSecurityException

GSSException

IllegalAccessException

IllegalClassFormatException

InstantiationException

InterruptedException

IntrospectionException

InvalidApplicationException

InvalidMidiDataException

InvalidPreferencesFormatException

InvalidTargetObjectTypeException

InvocationTargetException

IOException

JAXBException

JMException

KeySelectorException

LastOwnerException

LineUnavailableException

MarshalException

MidiUnavailableException

MimeTypeParseException

MimeTypeParseException

NamingException

NoninvertibleTransformException

NoSuchFieldException

NoSuchMethodException

NotBoundException

NotOwnerException

ParseException

ParserConfigurationException

PrinterException

PrintException

PrivilegedActionException

PropertyVetoException

RefreshFailedException

RemarshalException

RuntimeException

SAXException

ScriptException

ServerNotActiveException

SOAPException

SQLException

TimeoutException

TooManyListenersException

TransformerException

TransformException

UnmodifiableClassException

UnsupportedAudioFileException

UnsupportedCallbackException

UnsupportedFlavorException

UnsupportedLookAndFeelException

URIReferenceException

URISyntaxException

UserException

XAException

XMLParseException

XMLSignatureException

XMLStreamException

XPathException

来源:https://www.cnblogs.com/qubo520/p/7151701.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来举个例子。 假设我们有一个UserController,其中包含一个注册用户的接口registerUser,该接口需要传入用户名和密码。为了防止用户名重复,我们需要在该接口中处理业务异常。 首先,我们可以定义一个自定义异常类,比如UserExistException,用于表示用户名已存在的异常。该类可以继承RuntimeException,因为业务异常通常都是受检异常。 ```java public class UserExistException extends RuntimeException { public UserExistException(String message) { super(message); } } ``` 然后,在UserController中的registerUser方法中,我们可以使用try-catch语句来捕获该异常,并在发生异常时返回给前端一个友好的提示信息。 ```java @RestController public class UserController { @Autowired private UserService userService; @PostMapping("/register") public String registerUser(@RequestParam("username") String username, @RequestParam("password") String password) { try { userService.registerUser(username, password); return "注册成功"; } catch (UserExistException e) { return "用户名已存在,请重新输入"; } catch (Exception e) { return "系统繁忙,请稍后再试"; } } } ``` 最后,在UserService中的registerUser方法中,我们可以判断用户名是否已存在,如果已存在,则抛出UserExistException异常。 ```java @Service public class UserService { @Autowired private UserRepository userRepository; public void registerUser(String username, String password) { // 判断用户名是否已存在 User user = userRepository.findByUsername(username); if (user != null) { throw new UserExistException("用户名已存在"); } // 注册用户 userRepository.save(new User(username, password)); } } ``` 这样,当用户输入已存在的用户名时,UserController会捕获UserExistException异常,并返回给前端一个友好的提示信息。而当发生其它系统异常时,UserController也会返回一个友好的提示信息,避免将异常信息暴露给前端用户,提高系统的安全性和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值