给出一个用于编写计算器应用程序的算法，该应用程序可以进行加法、减法、乘法和除法运算。这个算法应该包含必要的错误处理功能。
1. 获取用户输入的第一个数字（数字类型）
2. 获取用户输入的运算符号（字符类型）
3. 获取用户输入的第二个数字（数字类型）
4. 判断运算符号是否为合法的加、减、乘、除运算符号，如果不是则提示用户重新输入
5. 判断除数是否为0，如果是则提示用户重新输入
6. 根据运算符号进行相应的运算，并输出结果
7. 如果输入的数据类型不是数字，则提示用户重新输入
8. 如果发生除0错误或其他异常情况，给出相应的错误提示

算法示例：

```
loop:
    input first (numeric)
    input operator (character)
    input second (numeric)

    if (not is_numeric(first) OR not is_numeric(second)) 
      print "Invalid input! Please enter a number."
      goto loop
    endif

    select operator
        case '+'
            result = first + second
        case '-'
            result = first - second
        case '*'
            result = first * second
        case '/'
            if second == 0:
                print "Invalid input! Division by zero is not allowed."
                goto loop
            else:
                result = first / second
            endif
        default:
            print "Invalid input! Please enter a valid operator (+, -, *, /)."
            goto loop
    endselect

    print result
```

该算法可以通过循环来实现输入错误格式数据时的重新输入，通过选择语句来实现不同运算符号的运算操作，并进行了除0错误检测和输入格式检测。