41 lines
903 B
TypeScript
41 lines
903 B
TypeScript
|
import { HttpException, HttpStatus } from '@nestjs/common'
|
||
|
|
||
|
import { ErrorEnum } from '~/constants/error-code.constant'
|
||
|
import { RESPONSE_SUCCESS_CODE } from '~/constants/response.constant'
|
||
|
|
||
|
export class BusinessException extends HttpException {
|
||
|
private errorCode: number
|
||
|
|
||
|
constructor(error: ErrorEnum | string) {
|
||
|
// 如果是非 ErrorEnum
|
||
|
if (!error.includes(':')) {
|
||
|
super(
|
||
|
HttpException.createBody({
|
||
|
code: RESPONSE_SUCCESS_CODE,
|
||
|
message: error,
|
||
|
}),
|
||
|
HttpStatus.OK,
|
||
|
)
|
||
|
this.errorCode = RESPONSE_SUCCESS_CODE
|
||
|
return
|
||
|
}
|
||
|
|
||
|
const [code, message] = error.split(':')
|
||
|
super(
|
||
|
HttpException.createBody({
|
||
|
code,
|
||
|
message,
|
||
|
}),
|
||
|
HttpStatus.OK,
|
||
|
)
|
||
|
|
||
|
this.errorCode = Number(code)
|
||
|
}
|
||
|
|
||
|
getErrorCode(): number {
|
||
|
return this.errorCode
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export { BusinessException as BizException }
|