自定义异常类的时候为什么要super (msg
时间: 2023-06-06 21:05:51 浏览: 375
)?
回答:super(msg)用于调用父类构造方法来初始化自定义异常类中的异常信息。由于自定义异常类是继承自Exception类,即继承自系统提供的异常类,因此需要调用父类的构造方法来完成异常信息的初始化。同时,通过super关键字可以实现对父类的继承,使自定义异常类具有父类的相同属性和方法。
相关问题
自定义异常类myexception,该类继承自exception类,类中只有含一个字符串参数msg的构造方法,构造方法中只有一条语句super(msg)——调用父类的构造方法。另外,编写自定义类per
son,该类包含两个属性name和age,以及一个方法check_age,该方法会抛出自定义异常类myexception,当年龄小于或大于150时抛出异常。
代码如下:
```
class MyException(Exception):
def __init__(self, msg):
super().__init__(msg)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def check_age(self):
if self.age < or self.age > 150:
raise MyException("年龄不合法")
```
使用方法:
```
p = Person("张三", 200)
try:
p.check_age()
except MyException as e:
print(e)
```
输出结果:
```
年龄不合法
```
oauth2自定义异常
OAuth2中提供了默认的异常处理机制,但是我们也可以自定义异常处理。下面是一个自定义OAuth2异常的例子:
```java
public class CustomOAuth2Exception extends OAuth2Exception {
public CustomOAuth2Exception(String msg) {
super(msg);
}
}
```
我们可以在自定义异常中添加一些额外的信息,例如错误码等。接下来,我们需要在TokenEndpoint类中添加一个异常处理器来处理这个自定义异常:
```java
@Controller
public class TokenEndpoint {
@RequestMapping(value = "/oauth/token", method=RequestMethod.POST)
public ResponseEntity<OAuth2AccessToken> postAccessToken(Principal principal, @RequestParam
Map<String, String> parameters) throws HttpRequestMethodNotSupportedException {
// ...
}
@ExceptionHandler(CustomOAuth2Exception.class)
public ResponseEntity<OAuth2Exception> handleCustomOAuth2Exception(CustomOAuth2Exception e) {
// 自定义异常处理逻辑
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e);
}
}
```
在上面的代码中,我们添加了一个handleCustomOAuth2Exception()方法来处理CustomOAuth2Exception异常。在这个方法中,我们可以添加自己的异常处理逻辑,例如返回自定义的错误码和错误信息等。