DekGenius.com
PYTHON
Handling Exceptions
>>> while True:
... try:
... x = int(input("Please enter a number: "))
... break
... except ValueError:
... print("Oops! That was no valid number. Try again...")
...
Handling Exceptions
import sys
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
except IOError as err:
print("I/O error: {0}".format(err))
except ValueError:
print("Could not convert data to an integer.")
except:
print("Unexpected error:", sys.exc_info()[0])
raise
Handling Exceptions
for arg in sys.argv[1:]:
try:
f = open(arg, 'r')
except IOError:
print('cannot open', arg)
else:
print(arg, 'has', len(f.readlines()), 'lines')
f.close()
exception handling
#include <iostream>
#include<conio.h>
using namespace std;
int main()
{
int a=10, b=0, c;
// try block activates exception handling
try
{
if(b == 0)
{
// throw custom exception
throw "Division by zero not possible";
c = a/b;
}
}
catch(char* ex) // catches exception
{
cout<<ex;
}
return 0;
}
Handling Exceptions
... except (RuntimeError, TypeError, NameError):
... pass
Handling Exceptions
>>> try:
... raise Exception('spam', 'eggs')
... except Exception as inst:
... print(type(inst)) # the exception instance
... print(inst.args) # arguments stored in .args
... print(inst) # __str__ allows args to be printed directly,
... # but may be overridden in exception subclasses
... x, y = inst.args # unpack args
... print('x =', x)
... print('y =', y)
...
<class 'Exception'>
('spam', 'eggs')
('spam', 'eggs')
x = spam
y = eggs
Handling Exceptions
>>> def this_fails():
... x = 1/0
...
>>> try:
... this_fails()
... except ZeroDivisionError as err:
... print('Handling run-time error:', err)
...
Handling run-time error: int division or modulo by zero
exception handling
@RestController
@RequestMapping("/product")
@AllArgsConstructor
public class ProductController {
public static final String TRACE = "trace";
@Value("${reflectoring.trace:false}")
private boolean printStackTrace;
private final ProductService productService;
@GetMapping("/{id}")
public Product getProduct(@PathVariable String id){
return productService.getProduct(id);
}
@PostMapping
public Product addProduct(@RequestBody @Valid ProductInput input){
return productService.addProduct(input);
}
@ExceptionHandler(NoSuchElementFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ResponseEntity<ErrorResponse> handleItemNotFoundException(
NoSuchElementFoundException exception,
WebRequest request
){
log.error("Failed to find the requested element", exception);
return buildErrorResponse(exception, HttpStatus.NOT_FOUND, request);
}
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.UNPROCESSABLE_ENTITY)
public ResponseEntity<ErrorResponse> handleMethodArgumentNotValid(
MethodArgumentNotValidException ex,
WebRequest request
) {
ErrorResponse errorResponse = new ErrorResponse(
HttpStatus.UNPROCESSABLE_ENTITY.value(),
"Validation error. Check 'errors' field for details."
);
for (FieldError fieldError : ex.getBindingResult().getFieldErrors()) {
errorResponse.addValidationError(fieldError.getField(),
fieldError.getDefaultMessage());
}
return ResponseEntity.unprocessableEntity().body(errorResponse);
}
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ResponseEntity<ErrorResponse> handleAllUncaughtException(
Exception exception,
WebRequest request){
log.error("Unknown error occurred", exception);
return buildErrorResponse(
exception,
"Unknown error occurred",
HttpStatus.INTERNAL_SERVER_ERROR,
request
);
}
private ResponseEntity<ErrorResponse> buildErrorResponse(
Exception exception,
HttpStatus httpStatus,
WebRequest request
) {
return buildErrorResponse(
exception,
exception.getMessage(),
httpStatus,
request);
}
private ResponseEntity<ErrorResponse> buildErrorResponse(
Exception exception,
String message,
HttpStatus httpStatus,
WebRequest request
) {
ErrorResponse errorResponse = new ErrorResponse(
httpStatus.value(),
exception.getMessage()
);
if(printStackTrace && isTraceOn(request)){
errorResponse.setStackTrace(ExceptionUtils.getStackTrace(exception));
}
return ResponseEntity.status(httpStatus).body(errorResponse);
}
private boolean isTraceOn(WebRequest request) {
String [] value = request.getParameterValues(TRACE);
return Objects.nonNull(value)
&& value.length > 0
&& value[0].contentEquals("true");
}
}
handling exceptions
I use try & catch & finally block
to handle exception if I will use the method
in different class.
Or If I will use it only once and if it is checked
exception then I use THROWS keyword on method signature
© 2022 Copyright:
DekGenius.com