ArgumentError Nedir?
Örneğin, bir fonksiyon sayısal bir değer beklerken, siz ona bir metin gönderdiğinizde bu hata karşınıza çıkacaktır.
```elixir
defmodule Hesapla do
def topla(a, b) do
a + b
end
end
Hesapla.topla(5, "on")
```
Yukarıdaki kodda, `topla` fonksiyonu iki sayıyı toplamak üzere tasarlanmıştır, ancak ikinci argüman olarak bir metin ("on") gönderilmiştir. Bu, Elixir'in beklediği türle uyumsuz olduğundan, ArgumentError hatasına yol açacaktır.
Çıktı:
```
(ArgumentError) bad argument in arithmetic expression: 5 + "on"
```
ArgumentError Hatasını Anlamak
ArgumentError'ı Çözme Yolları
```elixir
Hesapla.topla(5, 10)
```
Bu şekilde doğru türde iki sayı gönderdiğimizde, işlem başarıyla yapılacak ve ArgumentError ortadan kalkacaktır.
Ama bazen işler biraz daha karmaşık olabilir. Fonksiyonlara verdiğiniz verileri doğrulamak için `is_number/1` gibi Elixir’in yerleşik fonksiyonlarını kullanabilirsiniz. Örneğin:
```elixir
defmodule Hesapla do
def topla(a, b) when is_number(a) and is_number(b) do
a + b
end
def topla(_, _) do
{:error, "Geçersiz argüman tipi"}
end
end
Hesapla.topla(5, 10) # 15
Hesapla.topla(5, "on") # {:error, "Geçersiz argüman tipi"}
```
Bu kodda, iki sayıyı toplamak için `is_number/1` fonksiyonunu kullanarak tür kontrolü yapıyoruz. Eğer argümanlar uygun türde değilse, bir hata mesajı döndürüyoruz. Bu, yazılımınızda daha sağlam hata yönetimi sağlar.
ArgumentError ile Nasıl Etkili Hata Yönetimi Yapılır?
Örneğin:
```elixir
defmodule Hesapla do
def topla(a, b) when is_number(a) and is_number(b) do
a + b
end
def topla(_, _) do
raise ArgumentError, message: "Geçersiz veri türü!"
end
end
Hesapla.topla(5, "on")
```
Yukarıdaki kodda, geçersiz bir argüman alındığında hata fırlatıyoruz. Bu, daha kontrollü bir hata yönetimi sağlar ve yazılımınızın güvenliğini artırır.
Sonuç: ArgumentError’ı Anlamak ve Yönetmek
Unutmayın, her hata bir öğrenme fırsatıdır. Kodunuzda neyin yanlış olduğunu anlamak, ilerlemenize ve daha sağlam yazılımlar üretmenize yardımcı olacaktır.