```ts
/**
 * A divided by b, rounding to nearest integer if necessary.
 */
export function safeDivide(a: number, b: number): number {
  // Check for invalid arguments
  if (b === 0 || !Number.isFinite(a) || !Number.isFinite(b)) {
    throw new Error("Both arguments must be finite numbers and non-zero.");
  }

  // Perform the division and round to nearest integer
  return Math.round(a / b);
}
```