Xóa bài viết
Bạn có chắc chắn muốn xóa bài viết này không ?
Xóa bình luận
Bạn có chắc chắn muốn xóa bình luận này không ?
Elixir Exception
Cách tạo mới Exception trong Elixir
Khi muốn tạo mới một loại Exception, cần define hàm exception/1
. Hàm này sẽ được gọi khi exception được raise
Cụ thể, với exception Ecto.NoPrimaryKeyFieldError
được định nghĩa như sau
defmodule Ecto.NoPrimaryKeyFieldError do
@moduledoc """
Raised at runtime when an operation that requires a primary key is invoked
with a schema that does not define a primary key by using `@primary_key false`
"""
defexception [:message, :schema]
def exception(opts) do
schema = Keyword.fetch!(opts, :schema)
message = "schema `#{inspect schema}` has no primary key"
%__MODULE__{message: message, schema: schema}
end
end
Khi exception này được raise, hàm exception/1
sẽ được gọi
def primary_key!(%{__struct__: schema} = struct) do
case primary_key(struct) do
[] -> raise Ecto.NoPrimaryKeyFieldError, schema: schema
pk -> pk
end
end
Nếu như trong Exception module, không định nghĩa hàm exception/1
, thì khi raise
exception, cần truyền vào đầy đủ các tham số của exception
defmodule SimpleException do
defexception [:message, :foo]
end
raise SimpleException, message: "hello exception", foo: "foo value"
kiennt 05-07-2016
Bình luận

{{ comment.user.name }}
Bỏ hay
Hay

Cùng một tác giả

100
19
Mọi chuyện bắt đầu từ nắm 2013 trong quá trình xây dựng chức năng login với Facebook, tôi đã tìm ra một cách để tấn công vào các hệ thống login với...

73
5
Trong tuần vừa rồi, mình có đọc chương 7 cuốn sách (Link). Bài viết này nhằm mục đích giúp mình tổng hợp lại những kiến thức đã học được về chương ...

33
5
1. Đặt vấn đề Một trong các vấn đề của một hệ thống backend là bài toán điều phối request tới các nguồn dữ liệu. Xét bài toán với một hệ thống bl...
Bài viết liên quan

0
5
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...

4
0
I used Spring boot, Hibernate few times back then at University, I'v started using it again recently. In this (Link), I want to check how Spring J...