我正在尝试在rails中的服务中引发myExceptions。
但是当我使用特定的异常名称进行救援时,它会为名为。
的异常提供一个nameErrorstatus": 500,
"error": "Internal Server Error",
"exception": "#<NameError: uninitialized constant Api::V1::UsersController::CustomExceptions>",
"traces": {
例外文件:
module CustomExceptions
class EmptyObject < StandardError; end
class WrongParams < StandardError; end
class Unauthorized < StandardError; end
end
举起异常:
class UsersService
class << self
include AuthenticationHelper
def find_users(current_user, query_params)
users = User.where(some query)
if users.count > 0
users
else
raise CustomExceptions::EmptyObject, "empty user object returned"
end
end
end
end
在控制器中救援:
rescue CustomExceptions::EmptyObject => error
render json: {error: 'No users found'}, status: 404
end
答案 0 :(得分:1)
因为您定义了CustomExceptions
,所以Rails希望您在文件custom_exceptions.rb
中定义该类。
要调用CustomExceptions
,您应该重命名文件名。
答案 1 :(得分:0)
看起来您的命名空间有点混乱。确保您使用顶级命名空间并阻止其查看UserService
以查找异常的一种方法是使用::
明确表示您要使用顶级命名空间:
raise ::CustomExceptions::EmptyObject, "empty user object returned"